Files
reference/docs/cs.html
jaywcjlove 4b7c32aa88 doc: update docs/cs.md (#609)
* 增加国内镜像

* add reference of syntax sugar for c#

* optimizing page format for cs.md

* optimizing page format for cs.md

* add reference of linq for c# 9684f7c9e4
2024-04-12 08:54:06 +00:00

1796 lines
229 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en" data-color-mode="dark">
<head>
<meta charset="utf-8">
<title>
C# 备忘清单
&#x26; cs cheatsheet &#x26; Quick Reference</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta description="提供基本语法和方法的 C# 快速参考备忘单
入门,为开发人员分享快速参考备忘单。">
<meta keywords="cs,reference,Quick,Reference,cheatsheet,cheat,sheet">
<link rel="icon" href="data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20height%3D%221em%22%20width%3D%221em%22%3E%20%3Cpath%20d%3D%22m21.66%2010.44-.98%204.18c-.84%203.61-2.5%205.07-5.62%204.77-.5-.04-1.04-.13-1.62-.27l-1.68-.4c-4.17-.99-5.46-3.05-4.48-7.23l.98-4.19c.2-.85.44-1.59.74-2.2%201.17-2.42%203.16-3.07%206.5-2.28l1.67.39c4.19.98%205.47%203.05%204.49%207.23Z%22%20fill%3D%22%23c9d1d9%22%2F%3E%20%3Cpath%20d%3D%22M15.06%2019.39c-.62.42-1.4.77-2.35%201.08l-1.58.52c-3.97%201.28-6.06.21-7.35-3.76L2.5%2013.28c-1.28-3.97-.22-6.07%203.75-7.35l1.58-.52c.41-.13.8-.24%201.17-.31-.3.61-.54%201.35-.74%202.2l-.98%204.19c-.98%204.18.31%206.24%204.48%207.23l1.68.4c.58.14%201.12.23%201.62.27Zm2.43-8.88c-.06%200-.12-.01-.19-.02l-4.85-1.23a.75.75%200%200%201%20.37-1.45l4.85%201.23a.748.748%200%200%201-.18%201.47Z%22%20fill%3D%22%23228e6c%22%20%2F%3E%20%3Cpath%20d%3D%22M14.56%2013.89c-.06%200-.12-.01-.19-.02l-2.91-.74a.75.75%200%200%201%20.37-1.45l2.91.74c.4.1.64.51.54.91-.08.34-.38.56-.72.56Z%22%20fill%3D%22%23228e6c%22%20%2F%3E%20%3C%2Fsvg%3E" type="image/svg+xml">
<link rel="stylesheet" href="../style/style.css">
<link rel="stylesheet" href="../style/katex.css">
</head>
<body><nav class="header-nav"><div class="max-container"><a href="../index.html" class="logo"><svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" height="1em" width="1em">
<path d="m21.66 10.44-.98 4.18c-.84 3.61-2.5 5.07-5.62 4.77-.5-.04-1.04-.13-1.62-.27l-1.68-.4c-4.17-.99-5.46-3.05-4.48-7.23l.98-4.19c.2-.85.44-1.59.74-2.2 1.17-2.42 3.16-3.07 6.5-2.28l1.67.39c4.19.98 5.47 3.05 4.49 7.23Z" fill="#c9d1d9"></path>
<path d="M15.06 19.39c-.62.42-1.4.77-2.35 1.08l-1.58.52c-3.97 1.28-6.06.21-7.35-3.76L2.5 13.28c-1.28-3.97-.22-6.07 3.75-7.35l1.58-.52c.41-.13.8-.24 1.17-.31-.3.61-.54 1.35-.74 2.2l-.98 4.19c-.98 4.18.31 6.24 4.48 7.23l1.68.4c.58.14 1.12.23 1.62.27Zm2.43-8.88c-.06 0-.12-.01-.19-.02l-4.85-1.23a.75.75 0 0 1 .37-1.45l4.85 1.23a.748.748 0 0 1-.18 1.47Z" fill="#228e6c"></path>
<path d="M14.56 13.89c-.06 0-.12-.01-.19-.02l-2.91-.74a.75.75 0 0 1 .37-1.45l2.91.74c.4.1.64.51.54.91-.08.34-.38.56-.72.56Z" fill="#228e6c"></path>
</svg>
<span class="title">Quick Reference</span></a><div class="menu"><a href="javascript:void(0);" class="searchbtn" id="searchbtn"><svg xmlns="http://www.w3.org/2000/svg" height="1em" width="1em" viewBox="0 0 18 18">
<path fill="currentColor" d="M17.71,16.29 L14.31,12.9 C15.4069846,11.5024547 16.0022094,9.77665502 16,8 C16,3.581722 12.418278,0 8,0 C3.581722,0 0,3.581722 0,8 C0,12.418278 3.581722,16 8,16 C9.77665502,16.0022094 11.5024547,15.4069846 12.9,14.31 L16.29,17.71 C16.4777666,17.8993127 16.7333625,18.0057983 17,18.0057983 C17.2666375,18.0057983 17.5222334,17.8993127 17.71,17.71 C17.8993127,17.5222334 18.0057983,17.2666375 18.0057983,17 C18.0057983,16.7333625 17.8993127,16.4777666 17.71,16.29 Z M2,8 C2,4.6862915 4.6862915,2 8,2 C11.3137085,2 14,4.6862915 14,8 C14,11.3137085 11.3137085,14 8,14 C4.6862915,14 2,11.3137085 2,8 Z"></path>
</svg><span>搜索</span><span>⌘K</span></a><a href="https://github.com/jaywcjlove/reference/blob/main/docs/cs.md" class="" target="__blank"><svg viewBox="0 0 36 36" fill="currentColor" height="1em" width="1em"><path d="m33 6.4-3.7-3.7a1.71 1.71 0 0 0-2.36 0L23.65 6H6a2 2 0 0 0-2 2v22a2 2 0 0 0 2 2h22a2 2 0 0 0 2-2V11.76l3-3a1.67 1.67 0 0 0 0-2.36ZM18.83 20.13l-4.19.93 1-4.15 9.55-9.57 3.23 3.23ZM29.5 9.43 26.27 6.2l1.85-1.85 3.23 3.23Z"></path><path fill="none" d="M0 0h36v36H0z"></path></svg><span>编辑</span></a><button id="darkMode" type="button"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="light" height="1em" width="1em">
<path d="M6.995 12c0 2.761 2.246 5.007 5.007 5.007s5.007-2.246 5.007-5.007-2.246-5.007-5.007-5.007S6.995 9.239 6.995 12zM11 19h2v3h-2zm0-17h2v3h-2zm-9 9h3v2H2zm17 0h3v2h-3zM5.637 19.778l-1.414-1.414 2.121-2.121 1.414 1.414zM16.242 6.344l2.122-2.122 1.414 1.414-2.122 2.122zM6.344 7.759 4.223 5.637l1.415-1.414 2.12 2.122zm13.434 10.605-1.414 1.414-2.122-2.122 1.414-1.414z"></path>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 24 24" class="dark" height="1em" width="1em">
<path d="M12 11.807A9.002 9.002 0 0 1 10.049 2a9.942 9.942 0 0 0-5.12 2.735c-3.905 3.905-3.905 10.237 0 14.142 3.906 3.906 10.237 3.905 14.143 0a9.946 9.946 0 0 0 2.735-5.119A9.003 9.003 0 0 1 12 11.807z"></path>
</svg>
</button><script src="../js/dark.js?v=1.5.3"></script><a href="https://github.com/jaywcjlove/reference" class="" target="__blank"><svg viewBox="0 0 16 16" fill="currentColor" height="1em" width="1em"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z"></path></svg></a></div></div></nav><div class="wrap h1body-exist max-container"><header class="wrap-header h1wrap"><h1 id="c-备忘清单"><svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" width="1em" height="1em" viewBox="0 0 200 218">
<path d="M100,0.44 L100,0.455333333 L199.666667,58.5993333 L199.666667,159.400667 L100,217.56 L0.333333333,159.400667 L0.333333333,58.5993333 L100,0.44 Z M82.0833333,55.333 C53.8740706,55.3333333 31,78.2074039 31,106.424 L31,111.576 C31.0041913,129.277326 40.1707165,145.7152 55.2277239,155.022373 C70.2847313,164.329546 89.0864906,165.17968 104.922,157.269333 L111.101333,154.202667 L104.232,140.479333 L98.068,143.546 C86.9899096,149.088667 73.8317911,148.500121 63.2927817,141.99055 C52.7537723,135.480978 46.336719,123.978635 46.3333333,111.591333 L46.3333333,106.439333 C46.3346881,94.0500894 52.7491422,82.5443897 63.2870103,76.0292762 C73.8248785,69.5141628 86.9843283,68.9181542 98.068,74.454 L104.232,77.536 L111.101333,63.828 L104.922,60.746 C98.0448161,57.3003013 90.4812112,55.4533442 82.7961467,55.3389754 L82.0833333,55.333 Z M138.333333,70.6666667 L123,70.6666667 L123,86 L107.666667,86 L107.666667,101.333333 L123,101.333333 L123,116.666667 L107.666667,116.666667 L107.666667,132 L123,132 L123,147.333333 L138.333333,147.333333 L138.333333,132 L153.666667,132 L153.666667,147.333333 L169,147.333333 L169,132 L184.333333,132 L184.333333,116.666667 L169,116.666667 L169,101.333333 L184.333333,101.333333 L184.333333,86 L169,86 L169,70.6666667 L153.666667,70.6666667 L153.666667,86 L138.333333,86 L138.333333,70.6666667 Z M153.666667,101.333333 L153.666667,116.666667 L138.333333,116.666667 L138.333333,101.333333 L153.666667,101.333333 Z"></path></svg><a aria-hidden="true" tabindex="-1" href="#c-备忘清单"><span class="icon icon-link"></span></a>C# 备忘清单</h1><div class="wrap-body">
<p>提供基本语法和方法的 C# 快速参考备忘单</p>
</div></header><div class="menu-tocs"><div class="menu-btn"><svg aria-hidden="true" fill="currentColor" height="1em" width="1em" viewBox="0 0 16 16" version="1.1" data-view-component="true">
<path fill-rule="evenodd" d="M2 4a1 1 0 100-2 1 1 0 000 2zm3.75-1.5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zM3 8a1 1 0 11-2 0 1 1 0 012 0zm-1 6a1 1 0 100-2 1 1 0 000 2z"></path>
</svg></div><div class="menu-modal"><a aria-hidden="true" class="leve2 tocs-link" data-num="2" href="#入门">入门</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#hellocs">Hello.cs</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#命名空间">命名空间</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#访问修饰符">访问修饰符</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#字符串">字符串</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#注释">注释</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#用户输入">用户输入</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#条件判断">条件判断</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#变量">变量</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#循环">循环</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#数组">数组</a><a aria-hidden="true" class="leve2 tocs-link" data-num="2" href="#c-数据类型">C# 数据类型</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#原始数据类型">原始数据类型</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#基本数据类型">基本数据类型</a><a aria-hidden="true" class="leve2 tocs-link" data-num="2" href="#c-字符串">C# 字符串</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#字符串连接">字符串连接</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#字符串插值">字符串插值</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#字符串成员">字符串成员</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#逐字字符串">逐字字符串</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#成员示例">成员示例</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#频繁字符串拼接">频繁字符串拼接</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#原始字符串文本">原始字符串文本</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#字符串判空">字符串判空</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#字符串截取">字符串截取</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#字符串分割">字符串分割</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#字符串替换">字符串替换</a><a aria-hidden="true" class="leve2 tocs-link" data-num="2" href="#运算符和表达式">运算符和表达式</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#逻辑运算">逻辑运算</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#关系运算符">关系运算符</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#算术运算符">算术运算符</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#运算符优先级">运算符优先级</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#逻辑非运算符">逻辑非运算符</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#逻辑与运算符-">逻辑“与”运算符 &#x26;</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#逻辑异或运算符-">逻辑异或运算符 ^</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#逻辑或运算符-">逻辑或运算符 |</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#条件逻辑与运算符-">条件逻辑“与”运算符 &#x26;&#x26;</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#条件逻辑或运算符-">条件逻辑或运算符 ||</a><a aria-hidden="true" class="leve2 tocs-link" data-num="2" href="#类"></a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#成员变量">成员变量</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#静态成员">静态成员</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#构造函数">构造函数</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#方法">方法</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#属性">属性</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#接口">接口</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#继承">继承</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#访问修饰符-1">访问修饰符</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#字段的特殊修饰符">字段的特殊修饰符</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#方法的特殊修饰符">方法的特殊修饰符</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#公共类">公共类</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#私有类">私有类</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#命名约定">命名约定</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#默认情况默认情况即为内部类">默认情况(默认情况即为内部类)</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#抽象类与密封类">抽象类与密封类</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#抽象类abstract">抽象类abstract</a><a aria-hidden="true" class="leve4 tocs-link" data-num="4" href="#密封类sealed">密封类sealed</a><a aria-hidden="true" class="leve2 tocs-link" data-num="2" href="#元组">元组</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#基本使用">基本使用</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#方法调用与接收">方法调用与接收</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#类中使用元组">类中使用元组</a><a aria-hidden="true" class="leve2 tocs-link" data-num="2" href="#集合">集合</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#c集合">c#集合</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#list">List</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#hashset">HashSet</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#concurrentbag">ConcurrentBag</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#stack">Stack</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#dictionary">Dictionary</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#hashtable">Hashtable</a><a aria-hidden="true" class="leve2 tocs-link" data-num="2" href="#linq">LINQ</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#from">FROM</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#where">WHERE</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#groupby">GROUPBY</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#select">SELECT</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#orderby">ORDERBY</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#join">JOIN</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#结果转换">结果转换</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#自定义扩展方法">自定义扩展方法</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#示例">示例</a><a aria-hidden="true" class="leve2 tocs-link" data-num="2" href="#语法糖">语法糖</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#对象判空及赋值">对象判空及赋值</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#可空类型判空及赋值">可空类型判空及赋值</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#减少空引用">减少空引用</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#判断参数类型并转换类型校验">判断参数类型并转换类型+校验</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#switch">Switch</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#切片操作">切片操作</a><a aria-hidden="true" class="leve2 tocs-link" data-num="2" href="#杂项">杂项</a><a aria-hidden="true" class="leve3 tocs-link" data-num="3" href="#常用-net-概念">常用 .NET 概念</a></div></div><div class="h1wrap-body"><div class="wrap h2body-exist"><div class="wrap-header h2wrap"><h2 id="入门"><a aria-hidden="true" tabindex="-1" href="#入门"><span class="icon icon-link"></span></a>入门</h2><div class="wrap-body">
</div></div><div class="h2wrap-body"><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="hellocs"><a aria-hidden="true" tabindex="-1" href="#hellocs"><span class="icon icon-link"></span></a>Hello.cs</h3><div class="wrap-body">
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token keyword">class</span> <span class="token class-name">Hello</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token comment">// main method</span>
</span><span class="code-line"> <span class="token keyword">static</span> <span class="token return-type class-name"><span class="token keyword">void</span></span> <span class="token function">Main</span><span class="token punctuation">(</span><span class="token class-name"><span class="token keyword">string</span><span class="token punctuation">[</span><span class="token punctuation">]</span></span> args<span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token comment">// 输出: Hello, world!</span>
</span><span class="code-line"> Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span><span class="token string">"Hello, world!"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"> <span class="token punctuation">}</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
<p>编译运行(确保在项目目录下)</p>
<pre class="language-shell"><code class="language-shell code-highlight"><span class="code-line">$ dotnet run
</span><span class="code-line">Hello, world<span class="token operator">!</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="命名空间"><a aria-hidden="true" tabindex="-1" href="#命名空间"><span class="icon icon-link"></span></a>命名空间</h3><div class="wrap-body">
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token comment">//使用时 using 命名名称</span>
</span><span class="code-line"><span class="token keyword">using</span> <span class="token namespace">Test</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token comment">//创建:</span>
</span><span class="code-line"><span class="token keyword">namespace</span> <span class="token namespace">Test</span><span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">class</span> <span class="token class-name">Test_className</span><span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token comment">// main方法是程序的主入口</span>
</span><span class="code-line"> <span class="token keyword">public</span> <span class="token return-type class-name"><span class="token keyword">void</span></span> <span class="token function">Myclass</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> console<span class="token punctuation">.</span><span class="token function">writeline</span><span class="token punctuation">(</span><span class="token string">"Test"</span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token punctuation">}</span>
</span><span class="code-line"> <span class="token punctuation">}</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist row-span-2"><div class="wrap-header h3wrap"><h3 id="访问修饰符"><a aria-hidden="true" tabindex="-1" href="#访问修饰符"><span class="icon icon-link"></span></a>访问修饰符</h3><div class="wrap-body">
<!--rehype:wrap-class=row-span-2-->
<table class="style-list"><thead><tr><th>声明的可访问性</th><th>含义</th></tr></thead><tbody><tr><td><code>public</code></td><td>访问不受限制</td></tr><tr><td><code>protected</code></td><td>访问限于包含类或派生自包含类的类型 (该类内部和继承类中可以访问)</td></tr><tr><td><code>internal</code></td><td>访问限于当前程序集</td></tr><tr><td><code>protected internal</code></td><td>访问限于当前程序集或派生自包含类的类型</td></tr><tr><td><code>private</code></td><td>访问限于包含类</td></tr><tr><td><code>private protected</code></td><td>访问限于包含类或当前程序集中派生自包含类的类型,自 C# 7.2 之后可用</td></tr></tbody></table>
<!--rehype:className=style-list-->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="字符串"><a aria-hidden="true" tabindex="-1" href="#字符串"><span class="icon icon-link"></span></a>字符串</h3><div class="wrap-body">
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token class-name"><span class="token keyword">string</span></span> first <span class="token operator">=</span> <span class="token string">"John"</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">string</span></span> last <span class="token operator">=</span> <span class="token string">"Doe"</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token comment">// 字符串连接</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">string</span></span> name <span class="token operator">=</span> first <span class="token operator">+</span> <span class="token string">" "</span> <span class="token operator">+</span> last<span class="token punctuation">;</span>
</span><span class="code-line">Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span>name<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// => John Doe</span>
</span></code></pre>
<p>查看: <a href="#c-%E5%AD%97%E7%AC%A6%E4%B8%B2">C#字符串</a></p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="注释"><a aria-hidden="true" tabindex="-1" href="#注释"><span class="icon icon-link"></span></a>注释</h3><div class="wrap-body">
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token comment">// 单行注释</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">/*
</span></span><span class="code-line"><span class="token comment"> * 多行
</span></span><span class="code-line"><span class="token comment"> * 注释 - 用于文档
</span></span><span class="code-line"><span class="token comment"> */</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// TODO</span>
</span><span class="code-line"><span class="token comment">// 向IDE中的任务列表添加注释VS、Rider都支持</span>
</span><span class="code-line"><span class="token doc-comment comment">/// XML 单行注释,用于文档</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist col-span-2"><div class="wrap-header h3wrap"><h3 id="用户输入"><a aria-hidden="true" tabindex="-1" href="#用户输入"><span class="icon icon-link"></span></a>用户输入</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2-->
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line line-number" line="1">Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span><span class="token string">"Enter number:"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line line-number" line="2"><span class="token keyword">if</span><span class="token punctuation">(</span><span class="token keyword">int</span><span class="token punctuation">.</span><span class="token function">TryParse</span><span class="token punctuation">(</span>Console<span class="token punctuation">.</span><span class="token function">ReadLine</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span><span class="token keyword">out</span> <span class="token class-name"><span class="token keyword">int</span></span> input<span class="token punctuation">)</span><span class="token punctuation">)</span>
</span><span class="code-line line-number" line="3"><span class="token punctuation">{</span>
</span><span class="code-line line-number" line="4"> <span class="token comment">// 输入验证</span>
</span><span class="code-line line-number" line="5"> Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span><span class="token interpolation-string"><span class="token string">$"You entered </span><span class="token interpolation"><span class="token punctuation">{</span><span class="token expression language-csharp">input</span><span class="token punctuation">}</span></span><span class="token string">"</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line line-number" line="6"><span class="token punctuation">}</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="条件判断"><a aria-hidden="true" tabindex="-1" href="#条件判断"><span class="icon icon-link"></span></a>条件判断</h3><div class="wrap-body">
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token class-name"><span class="token keyword">int</span></span> j <span class="token operator">=</span> <span class="token number">10</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token keyword">if</span> <span class="token punctuation">(</span>j <span class="token operator">==</span> <span class="token number">10</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span><span class="token string">"I get printed"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>j <span class="token operator">></span> <span class="token number">10</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span><span class="token string">"I don't"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
</span><span class="code-line"> Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span><span class="token string">"I also don't"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="变量"><a aria-hidden="true" tabindex="-1" href="#变量"><span class="icon icon-link"></span></a>变量</h3><div class="wrap-body">
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token class-name"><span class="token keyword">int</span></span> intNum <span class="token operator">=</span> <span class="token number">9</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">long</span></span> longNum <span class="token operator">=</span> <span class="token number">9999999</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">float</span></span> floatNum <span class="token operator">=</span> <span class="token number">9.99F</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">double</span></span> doubleNum <span class="token operator">=</span> <span class="token number">99.999</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">decimal</span></span> decimalNum <span class="token operator">=</span> <span class="token number">99.9999M</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">char</span></span> letter <span class="token operator">=</span> <span class="token char">'D'</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">bool</span></span> @<span class="token keyword">bool</span> <span class="token operator">=</span> <span class="token boolean">true</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">string</span></span> site <span class="token operator">=</span> <span class="token string">"jaywcjlove.github.io"</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">var</span></span> num <span class="token operator">=</span> <span class="token number">999</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">var</span></span> str <span class="token operator">=</span> <span class="token string">"999"</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">var</span></span> bo <span class="token operator">=</span> <span class="token boolean">false</span><span class="token punctuation">;</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist col-span-2 row-span-2"><div class="wrap-header h3wrap"><h3 id="循环"><a aria-hidden="true" tabindex="-1" href="#循环"><span class="icon icon-link"></span></a>循环</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2 row-span-2-->
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token class-name"><span class="token keyword">int</span><span class="token punctuation">[</span><span class="token punctuation">]</span></span> numbers <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">,</span> <span class="token number">4</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">}</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token keyword">for</span><span class="token punctuation">(</span><span class="token class-name"><span class="token keyword">int</span></span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&#x3C;</span> numbers<span class="token punctuation">.</span>Length<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span>numbers<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
<hr>
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token keyword">foreach</span><span class="token punctuation">(</span><span class="token class-name"><span class="token keyword">int</span></span> num <span class="token keyword">in</span> numbers<span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span>num<span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
<hr>
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token keyword">while</span><span class="token punctuation">(</span><span class="token boolean">true</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span><span class="token string">"只要给定的条件为真while 循环语句会重复执行"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
<hr>
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token keyword">do</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span><span class="token string">"与 while 类似do...while 会确保至少执行一次循环。"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token punctuation">}</span> <span class="token keyword">while</span><span class="token punctuation">(</span> <span class="token boolean">true</span> <span class="token punctuation">)</span><span class="token punctuation">;</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="数组"><a aria-hidden="true" tabindex="-1" href="#数组"><span class="icon icon-link"></span></a>数组</h3><div class="wrap-body">
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token class-name"><span class="token keyword">char</span><span class="token punctuation">[</span><span class="token punctuation">]</span></span> chars <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token constructor-invocation class-name"><span class="token keyword">char</span></span><span class="token punctuation">[</span><span class="token number">10</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
</span><span class="code-line">chars<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token char">'a'</span><span class="token punctuation">;</span>
</span><span class="code-line">chars<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token char">'b'</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">string</span><span class="token punctuation">[</span><span class="token punctuation">]</span></span> letters <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token string">"A"</span><span class="token punctuation">,</span> <span class="token string">"B"</span><span class="token punctuation">,</span> <span class="token string">"C"</span><span class="token punctuation">}</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">int</span><span class="token punctuation">[</span><span class="token punctuation">]</span></span> mylist <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token number">100</span><span class="token punctuation">,</span> <span class="token number">200</span><span class="token punctuation">}</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">bool</span><span class="token punctuation">[</span><span class="token punctuation">]</span></span> answers <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token boolean">true</span><span class="token punctuation">,</span> <span class="token boolean">false</span><span class="token punctuation">}</span><span class="token punctuation">;</span>
</span></code></pre>
</div></div></div></div></div><div class="wrap h2body-exist"><div class="wrap-header h2wrap"><h2 id="c-数据类型"><a aria-hidden="true" tabindex="-1" href="#c-数据类型"><span class="icon icon-link"></span></a>C# 数据类型</h2><div class="wrap-body">
</div></div><div class="h2wrap-body"><div class="wrap h3body-not-exist col-span-2"><div class="wrap-header h3wrap"><h3 id="原始数据类型"><a aria-hidden="true" tabindex="-1" href="#原始数据类型"><span class="icon icon-link"></span></a>原始数据类型</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2-->
<table class="show-header"><thead><tr><th>关键字</th><th>名称</th><th>System 别名</th><th>占用空间Byte</th><th>数据范围</th></tr></thead><tbody><tr><td><code>bool</code></td><td>布尔型</td><td><code>Boolean</code></td><td>1</td><td>true/false</td></tr><tr><td><code>sbyte</code></td><td>有符号字节型</td><td><code>SByte</code></td><td>1</td><td>-128 ~ 127</td></tr><tr><td><code>byte</code></td><td>字节型</td><td><code>Byte</code></td><td>1</td><td>0 ~ 255</td></tr><tr><td><code>short</code></td><td>短整型</td><td><code>Int16</code></td><td>2</td><td>-32,768 ~ 32,767</td></tr><tr><td><code>ushort</code></td><td>无符号短整型</td><td><code>UInt16</code></td><td>2</td><td>0 ~ 65,535</td></tr><tr><td><code>int</code></td><td>整型</td><td><code>Int32</code></td><td>4</td><td>-2,147,483,648 ~ 2,147,483,647</td></tr><tr><td><code>uint</code></td><td>无符号整型</td><td><code>UInt32</code></td><td>4</td><td>0 ~ 4,294,967,295</td></tr><tr><td><code>long</code></td><td>长整型</td><td><code>Int64</code></td><td>8</td><td>-2^63 ~ 2^63-1</td></tr><tr><td><code>ulong</code></td><td>无符号长整型</td><td><code>UInt64</code></td><td>8</td><td>0 ~ 2^64-1</td></tr><tr><td><code>char</code></td><td>字符型</td><td><code>Char</code></td><td>8</td><td>UTF-16 所编码的字符</td></tr><tr><td><code>float</code></td><td>单精度浮点型</td><td><code>Single</code></td><td>4</td><td>±1.5x10^45 ~ ±3.4x10^38</td></tr><tr><td><code>double</code></td><td>双精度浮点型</td><td><code>Double</code></td><td>8</td><td>±5.0x10^-324 ~ ±1.7x10^308</td></tr><tr><td><code>nint</code></td><td>指针型</td><td><code>IntPtr</code></td><td>与指针相同</td><td>与指针相同(受操作系统和处理器位宽影响)</td></tr><tr><td><code>nuint</code></td><td>无符号指针型</td><td><code>UIntPtr</code></td><td>与指针相同</td><td>与指针相同(受操作系统和处理器位宽影响)</td></tr></tbody></table>
<!--rehype:className=show-header-->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="基本数据类型"><a aria-hidden="true" tabindex="-1" href="#基本数据类型"><span class="icon icon-link"></span></a>基本数据类型</h3><div class="wrap-body">
<table class="show-header"><thead><tr><th align="left">关键字</th><th>名称</th><th>System 别名</th><th>说明</th></tr></thead><tbody><tr><td align="left">(除指针型外的全部原始数据类型)</td><td>-</td><td>-</td><td>原始数据类型都是值类型,基本数据类型包含部分本质上是引用的数据类型</td></tr><tr><td align="left"><code>string</code></td><td>字符串</td><td><code>String</code></td><td>可变长度</td></tr><tr><td align="left"><code>decimal</code></td><td>十进制浮点数</td><td><code>Decimal</code></td><td>适合处理货币等计算16字节长不遵循 IEEE 754 关于浮点数的规则</td></tr></tbody></table>
<!--rehype:className=show-header-->
</div></div></div></div></div><div class="wrap h2body-exist"><div class="wrap-header h2wrap"><h2 id="c-字符串"><a aria-hidden="true" tabindex="-1" href="#c-字符串"><span class="icon icon-link"></span></a>C# 字符串</h2><div class="wrap-body">
</div></div><div class="h2wrap-body"><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="字符串连接"><a aria-hidden="true" tabindex="-1" href="#字符串连接"><span class="icon icon-link"></span></a>字符串连接</h3><div class="wrap-body">
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token class-name"><span class="token keyword">string</span></span> first <span class="token operator">=</span> <span class="token string">"John"</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">string</span></span> last <span class="token operator">=</span> <span class="token string">"Doe"</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">string</span></span> name <span class="token operator">=</span> first <span class="token operator">+</span> <span class="token string">" "</span> <span class="token operator">+</span> last<span class="token punctuation">;</span>
</span><span class="code-line">Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span>name<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// => John Doe</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="字符串插值"><a aria-hidden="true" tabindex="-1" href="#字符串插值"><span class="icon icon-link"></span></a>字符串插值</h3><div class="wrap-body">
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token class-name"><span class="token keyword">string</span></span> first <span class="token operator">=</span> <span class="token string">"John"</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">string</span></span> last <span class="token operator">=</span> <span class="token string">"Doe"</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">string</span></span> name <span class="token operator">=</span> <span class="token interpolation-string"><span class="token string">$"</span><span class="token interpolation"><span class="token punctuation">{</span><span class="token expression language-csharp">first</span><span class="token punctuation">}</span></span><span class="token string"> </span><span class="token interpolation"><span class="token punctuation">{</span><span class="token expression language-csharp">last</span><span class="token punctuation">}</span></span><span class="token string">"</span></span><span class="token punctuation">;</span>
</span><span class="code-line">Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span>name<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// => John Doe</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist row-span-2"><div class="wrap-header h3wrap"><h3 id="字符串成员"><a aria-hidden="true" tabindex="-1" href="#字符串成员"><span class="icon icon-link"></span></a>字符串成员</h3><div class="wrap-body">
<!--rehype:wrap-class=row-span-2-->
<table class="show-header"><thead><tr><th align="left">成员</th><th>说明</th></tr></thead><tbody><tr><td align="left"><code>Length</code></td><td>返回字符串长度的属性</td></tr><tr><td align="left"><code>Compare()</code></td><td>比较两个字符串的静态方法</td></tr><tr><td align="left"><code>Contains()</code></td><td>确定字符串是否包含特定的子字符串</td></tr><tr><td align="left"><code>Equals()</code></td><td>确定两个字符串是否具有相同的字符数据</td></tr><tr><td align="left"><code>Format()</code></td><td>通过 {0} 表示法和使用其他原语格式化字符串</td></tr><tr><td align="left"><code>Trim()</code></td><td>从尾随和前导字符中删除特定字符的所有实例。 默认删除前导和尾随空格</td></tr><tr><td align="left"><code>Split()</code></td><td>删除提供的字符并从两侧的剩余字符中创建一个数组</td></tr></tbody></table>
<!--rehype:className=show-header-->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="逐字字符串"><a aria-hidden="true" tabindex="-1" href="#逐字字符串"><span class="icon icon-link"></span></a>逐字字符串</h3><div class="wrap-body">
<pre class="wrap-text"><code class="language-cs code-highlight"><span class="code-line line-number" line="1"><span class="token class-name"><span class="token keyword">string</span></span> longString <span class="token operator">=</span> <span class="token string">@"I can type any characters in here !#@$%^&#x26;*()__+ '' \n \t except double quotes and I will be taken literally. I even work with multiple lines."</span><span class="token punctuation">;</span>
</span></code></pre>
<!--rehype:className=wrap-text-->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="成员示例"><a aria-hidden="true" tabindex="-1" href="#成员示例"><span class="icon icon-link"></span></a>成员示例</h3><div class="wrap-body">
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token comment">// 使用 System.String 的属性</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">string</span></span> lengthOfString <span class="token operator">=</span> <span class="token string">"How long?"</span><span class="token punctuation">;</span>
</span><span class="code-line">lengthOfString<span class="token punctuation">.</span>Length <span class="token comment">// => 9</span>
</span><span class="code-line"><span class="token comment">// 使用 System.String 的方法</span>
</span><span class="code-line">lengthOfString<span class="token punctuation">.</span><span class="token function">Contains</span><span class="token punctuation">(</span><span class="token string">"How"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// => true</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="频繁字符串拼接"><a aria-hidden="true" tabindex="-1" href="#频繁字符串拼接"><span class="icon icon-link"></span></a>频繁字符串拼接</h3><div class="wrap-body">
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token class-name"><span class="token keyword">var</span></span> sb <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">StringBuilder</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token class-name"><span class="token keyword">int</span></span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&#x3C;</span> <span class="token number">100</span><span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> sb<span class="token punctuation">.</span><span class="token function">Append</span><span class="token punctuation">(</span>i<span class="token punctuation">.</span><span class="token function">ToString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span>sb<span class="token punctuation">.</span><span class="token function">ToString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token comment">// => 123456789....</span>
</span></code></pre>
<p>对于频繁拼接字符串的场景(如:成百上千次循环),使用 <code>System.Text.StringBuilder</code> 提升性能</p>
</div></div></div><div class="wrap h3body-not-exist col-span-2"><div class="wrap-header h3wrap"><h3 id="原始字符串文本"><a aria-hidden="true" tabindex="-1" href="#原始字符串文本"><span class="icon icon-link"></span></a>原始字符串文本</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2-->
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token comment">// C#11 语法, 至少3个双引号(""")开头和结尾,内容可以输入任何原始字符</span>
</span><span class="code-line"><span class="token comment">// 单行: 左引号,右引号,内容 三者同行</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">string</span></span> singleLine <span class="token operator">=</span> <span class="token string">""</span>"Content begin <span class="token string">"Hello World!"</span> end<span class="token punctuation">.</span><span class="token string">""</span>"<span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 多行:左引号,右引号各一行,内容需与右引号缩进对齐</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">string</span></span> multiLine <span class="token operator">=</span> <span class="token string">""</span>"
</span><span class="code-line"> Content begin <span class="token string">"Hello World!"</span> <span class="token operator">/</span>\n<span class="token operator">&#x3C;</span><span class="token operator">></span><span class="token string">""</span> end<span class="token punctuation">.</span>
</span><span class="code-line"> <span class="token string">""</span>"<span class="token punctuation">;</span>
</span><span class="code-line">Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span>multiLine<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// => Content begin "Hello World!" /\n&#x3C;>"" end.</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist col-span-2"><div class="wrap-header h3wrap"><h3 id="字符串判空"><a aria-hidden="true" tabindex="-1" href="#字符串判空"><span class="icon icon-link"></span></a>字符串判空</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2-->
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token class-name"><span class="token keyword">string</span></span> name<span class="token punctuation">;</span> <span class="token comment">//空引用</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">string</span></span> gender <span class="token operator">=</span> <span class="token string">""</span><span class="token punctuation">;</span> <span class="token comment">//空值</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 使用 string.IsNullOrEmpty(字符串) 方法,返回 bool 型</span>
</span><span class="code-line">Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span><span class="token keyword">string</span><span class="token punctuation">.</span><span class="token function">IsNullOrEmpty</span><span class="token punctuation">(</span>name<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//输出 true</span>
</span><span class="code-line">Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span><span class="token keyword">string</span><span class="token punctuation">.</span><span class="token function">IsNullOrEmpty</span><span class="token punctuation">(</span>gender<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 输出 true</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="字符串截取"><a aria-hidden="true" tabindex="-1" href="#字符串截取"><span class="icon icon-link"></span></a>字符串截取</h3><div class="wrap-body">
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token class-name"><span class="token keyword">string</span></span> Str <span class="token operator">=</span> <span class="token string">"字符串截取"</span><span class="token punctuation">;</span>
</span><span class="code-line">Str <span class="token operator">=</span> Str<span class="token punctuation">.</span><span class="token function">Substring</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span>Str<span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token comment">// 输出结果“串”,意为从第二个下标开始截取一位字符</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist col-span-2"><div class="wrap-header h3wrap"><h3 id="字符串分割"><a aria-hidden="true" tabindex="-1" href="#字符串分割"><span class="icon icon-link"></span></a>字符串分割</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2-->
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token class-name"><span class="token keyword">string</span></span> Name <span class="token operator">=</span> <span class="token string">"字A符A串A分A割"</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">string</span><span class="token punctuation">[</span><span class="token punctuation">]</span></span> Names<span class="token operator">=</span>Name<span class="token punctuation">.</span><span class="token function">Split</span><span class="token punctuation">(</span><span class="token keyword">new</span> <span class="token constructor-invocation class-name"><span class="token keyword">char</span><span class="token punctuation">[</span><span class="token punctuation">]</span></span> <span class="token punctuation">{</span> <span class="token char">'A'</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token comment">// 会以A为媒介把字符串分成若干份</span>
</span><span class="code-line"><span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token class-name"><span class="token keyword">int</span></span> i <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span> i <span class="token operator">&#x3C;</span> Names<span class="token punctuation">.</span>Length<span class="token punctuation">;</span> i<span class="token operator">++</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> Console<span class="token punctuation">.</span><span class="token function">Write</span><span class="token punctuation">(</span>Names<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="字符串替换"><a aria-hidden="true" tabindex="-1" href="#字符串替换"><span class="icon icon-link"></span></a>字符串替换</h3><div class="wrap-body">
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token class-name"><span class="token keyword">string</span></span> Rep <span class="token operator">=</span> <span class="token string">"字符1替换"</span><span class="token punctuation">;</span>
</span><span class="code-line">Rep <span class="token operator">=</span> Rep<span class="token punctuation">.</span><span class="token function">Replace</span><span class="token punctuation">(</span><span class="token string">"1"</span><span class="token punctuation">,</span> <span class="token string">"串"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span>Rep<span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token comment">// 会把字符中的 “1”替换成“串”</span>
</span></code></pre>
</div></div></div></div></div><div class="wrap h2body-exist"><div class="wrap-header h2wrap"><h2 id="运算符和表达式"><a aria-hidden="true" tabindex="-1" href="#运算符和表达式"><span class="icon icon-link"></span></a>运算符和表达式</h2><div class="wrap-body">
</div></div><div class="h2wrap-body"><div class="wrap h3body-not-exist row-span-2"><div class="wrap-header h3wrap"><h3 id="逻辑运算"><a aria-hidden="true" tabindex="-1" href="#逻辑运算"><span class="icon icon-link"></span></a>逻辑运算</h3><div class="wrap-body">
<!--rehype:wrap-class=row-span-2-->
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token comment">//或运算, 与运算, 非运算</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">bool</span></span> A <span class="token operator">=</span> <span class="token boolean">true</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">bool</span></span> B <span class="token operator">=</span> <span class="token boolean">false</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">bool</span></span> Or <span class="token operator">=</span> A <span class="token operator">||</span> B<span class="token punctuation">;</span> <span class="token comment">// = A | B</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">bool</span></span> And <span class="token operator">=</span> A <span class="token operator">&#x26;&#x26;</span> B<span class="token punctuation">;</span> <span class="token comment">// = A &#x26; B</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">bool</span></span> Not <span class="token operator">=</span> <span class="token operator">!</span>A<span class="token punctuation">;</span>
</span><span class="code-line"><span class="token comment">// ||,&#x26;&#x26; 与 |,&#x26; 分别为逻辑运算和条件逻辑运算, 两者的区别在于, </span>
</span><span class="code-line"><span class="token comment">// 前者仅在必要时才会计算右侧的值, 后者始终计算右侧的值. 例如:</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">bool</span></span> C <span class="token operator">=</span> <span class="token boolean">false</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">bool</span></span> D <span class="token operator">=</span> <span class="token boolean">true</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token return-type class-name"><span class="token keyword">bool</span></span> <span class="token function">CalcD</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> D <span class="token operator">=</span> <span class="token operator">!</span>D<span class="token punctuation">;</span>
</span><span class="code-line"> <span class="token keyword">return</span> D<span class="token punctuation">;</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">bool</span></span> E <span class="token operator">=</span> C <span class="token operator">&#x26;&#x26;</span> <span class="token function">CalcD</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// C: false, D: false, E: false</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">bool</span></span> F <span class="token operator">=</span> C <span class="token operator">&#x26;</span> <span class="token function">CalcD</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// C:false, D: true, F: false</span>
</span><span class="code-line"><span class="token comment">// 两种运算方法稍有不同, 计算结果始终相同, 但第二种可能造成其他影响.</span>
</span><span class="code-line"><span class="token comment">//异或运算</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">bool</span></span> Xor <span class="token operator">=</span> A <span class="token operator">^</span> B<span class="token punctuation">;</span>
</span></code></pre>
<p>C# 中的逻辑运算支持可空布尔类型运算. 注意条件逻辑运算不支持可空布尔类型.</p>
<table class="show-header"><thead><tr><th align="left">x</th><th>y</th><th>x &#x26; y</th><th>x | y</th><th>x ^ y</th><th>! x</th></tr></thead><tbody><tr><td align="left"><code>true</code></td><td><code>true</code></td><td><code>true</code></td><td><code>true</code></td><td>false</td><td>false</td></tr><tr><td align="left"><code>true</code></td><td>false</td><td>false</td><td><code>true</code></td><td><code>true</code></td><td>false</td></tr><tr><td align="left"><code>true</code></td><td><pur>null</pur></td><td><pur>null</pur></td><td><code>true</code></td><td><pur>null</pur></td><td>false</td></tr><tr><td align="left">false</td><td><code>true</code></td><td>false</td><td><code>true</code></td><td><code>true</code></td><td><code>true</code></td></tr><tr><td align="left">false</td><td>false</td><td>false</td><td>false</td><td>false</td><td><code>true</code></td></tr><tr><td align="left">false</td><td><pur>null</pur></td><td>false</td><td><pur>null</pur></td><td><pur>null</pur></td><td><code>true</code></td></tr><tr><td align="left"><pur>null</pur></td><td><code>true</code></td><td><pur>null</pur></td><td><code>true</code></td><td><pur>null</pur></td><td><pur>null</pur></td></tr><tr><td align="left"><pur>null</pur></td><td>false</td><td>false</td><td><pur>null</pur></td><td><pur>null</pur></td><td><pur>null</pur></td></tr><tr><td align="left"><pur>null</pur></td><td><pur>null</pur></td><td><pur>null</pur></td><td><pur>null</pur></td><td><pur>null</pur></td><td><pur>null</pur></td></tr></tbody></table>
<!--rehype:className=show-header-->
</div></div></div><div class="wrap h3body-not-exist col-span-2"><div class="wrap-header h3wrap"><h3 id="关系运算符"><a aria-hidden="true" tabindex="-1" href="#关系运算符"><span class="icon icon-link"></span></a>关系运算符</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2-->
<p>C# 支持下表中的所有关系运算符。假设变量 A 的值为 1变量 B 的值为 2</p>
<table class="show-header"><thead><tr><th align="left">运算符</th><th>描述</th><th>实例</th></tr></thead><tbody><tr><td align="left">==</td><td>检查两个操作数的值是否相等,如果相等则条件为真。</td><td>(A == B) 不为真。</td></tr><tr><td align="left">!=</td><td>检查两个操作数的值是否相等,如果不相等则条件为真。</td><td>(A != B) 为真。</td></tr><tr><td align="left">></td><td>检查左操作数的值是否大于右操作数的值,如果是则条件为真。</td><td>(A > B) 不为真。</td></tr><tr><td align="left">&#x3C;</td><td>检查左操作数的值是否小于右操作数的值,如果是则条件为真。</td><td>(A &#x3C; B) 为真。</td></tr><tr><td align="left">>=</td><td>检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。</td><td>(A >= B) 不为真。</td></tr><tr><td align="left">&#x3C;=</td><td>检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。</td><td>(A &#x3C;= B) 为真。</td></tr></tbody></table>
<!--rehype:className=show-header-->
</div></div></div><div class="wrap h3body-not-exist col-span-2"><div class="wrap-header h3wrap"><h3 id="算术运算符"><a aria-hidden="true" tabindex="-1" href="#算术运算符"><span class="icon icon-link"></span></a>算术运算符</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2-->
<p>C# 支持下表中的所有算术运算符。假设变量 A 的值为 10变量 B 的值为 20</p>
<table class="show-header"><thead><tr><th align="left">运算符</th><th>描述</th><th>实例</th></tr></thead><tbody><tr><td align="left">+</td><td>把两个操作数相加</td><td>A + B 将得到 30</td></tr><tr><td align="left">-</td><td>从第一个操作数中减去第二个操作数</td><td>A - B 将得到 -10</td></tr><tr><td align="left">*</td><td>把两个操作数相乘</td><td>A * B 将得到 200</td></tr><tr><td align="left">/</td><td>分子除以分母</td><td>B / A 将得到 2</td></tr><tr><td align="left">%</td><td>取模运算符,整除后的余数</td><td>B % A 将得到 0</td></tr><tr><td align="left">++</td><td>自增运算符,整数值增加 1</td><td>A++ 将得到 11</td></tr><tr><td align="left">--</td><td>自减运算符,整数值减少 1</td><td>A-- 将得到 9</td></tr></tbody></table>
<!--rehype:className=show-header-->
</div></div></div><div class="wrap h3body-not-exist col-span-2 row-span-3"><div class="wrap-header h3wrap"><h3 id="运算符优先级"><a aria-hidden="true" tabindex="-1" href="#运算符优先级"><span class="icon icon-link"></span></a>运算符优先级</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2 row-span-3-->
<p>下表将按运算符优先级从高到低列出各个运算符,具有较高优先级的运算符出现在表格的上面,具有较低优先级的运算符出现在表格的下面。在表达式中,较高优先级的运算符会优先被计算。</p>
<table class="show-header"><thead><tr><th align="left">类别</th><th>运算符</th><th>结合性</th></tr></thead><tbody><tr><td align="left">后缀</td><td>() [] -> . ++ - -</td><td>从左到右</td></tr><tr><td align="left">一元</td><td>+ - ! ~ ++ - - (type)* &#x26; sizeof</td><td>从右到左</td></tr><tr><td align="left">乘除</td><td>* / %</td><td>从左到右</td></tr><tr><td align="left">加减</td><td>+ -</td><td>从左到右</td></tr><tr><td align="left">移位</td><td>&#x3C;&#x3C; >></td><td>从左到右</td></tr><tr><td align="left">关系</td><td>&#x3C; &#x3C;= > >=</td><td>从左到右</td></tr><tr><td align="left">相等</td><td>== !=</td><td>从左到右</td></tr><tr><td align="left">位与 AND</td><td>&#x26;</td><td>从左到右</td></tr><tr><td align="left">位异或 XOR</td><td>^</td><td>从左到右</td></tr><tr><td align="left">位或 OR</td><td>|</td><td>从左到右</td></tr><tr><td align="left">逻辑与 AND</td><td>&#x26;&#x26;</td><td>从左到右</td></tr><tr><td align="left">逻辑或 OR</td><td>||</td><td>从左到右</td></tr><tr><td align="left">条件</td><td>?:</td><td>从右到左</td></tr><tr><td align="left">赋值</td><td>= += -= *= /= %=>>= &#x3C;&#x3C;= &#x26;= ^= |=</td><td>从右到左</td></tr><tr><td align="left">逗号</td><td>,</td><td>从左到右</td></tr></tbody></table>
<!--rehype:className=show-header-->
<p>运算符的优先级确定表达式中项的组合。这会影响到一个表达式如何计算。某些运算符比其他运算符有更高的优先级,例如,乘除运算符具有比加减运算符更高的优先级。</p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="逻辑非运算符"><a aria-hidden="true" tabindex="-1" href="#逻辑非运算符"><span class="icon icon-link"></span></a>逻辑非运算符</h3><div class="wrap-body">
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token class-name"><span class="token keyword">bool</span></span> passed <span class="token operator">=</span> <span class="token boolean">false</span><span class="token punctuation">;</span>
</span><span class="code-line">Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span><span class="token operator">!</span>passed<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 输出: True</span>
</span><span class="code-line">Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span><span class="token operator">!</span><span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 输出: False</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="逻辑与运算符-"><a aria-hidden="true" tabindex="-1" href="#逻辑与运算符-"><span class="icon icon-link"></span></a>逻辑“与”运算符 &#x26;</h3><div class="wrap-body">
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token return-type class-name"><span class="token keyword">bool</span></span> <span class="token function">SecondOperand</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span><span class="token string">"计算第二个操作数"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"> <span class="token keyword">return</span> <span class="token boolean">true</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token class-name"><span class="token keyword">bool</span></span> a <span class="token operator">=</span> <span class="token boolean">false</span> <span class="token operator">&#x26;</span> <span class="token function">SecondOperand</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span>a<span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token comment">// 输出:</span>
</span><span class="code-line"><span class="token comment">// 计算第二个操作数</span>
</span><span class="code-line"><span class="token comment">// False</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token class-name"><span class="token keyword">bool</span></span> b <span class="token operator">=</span> <span class="token boolean">true</span> <span class="token operator">&#x26;</span> <span class="token function">SecondOperand</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span>b<span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token comment">// 输出:</span>
</span><span class="code-line"><span class="token comment">// 计算第二个操作数</span>
</span><span class="code-line"><span class="token comment">// True</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="逻辑异或运算符-"><a aria-hidden="true" tabindex="-1" href="#逻辑异或运算符-"><span class="icon icon-link"></span></a>逻辑异或运算符 ^</h3><div class="wrap-body">
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line">Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span><span class="token boolean">true</span> <span class="token operator">^</span> <span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 输出: False</span>
</span><span class="code-line">Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span><span class="token boolean">true</span> <span class="token operator">^</span> <span class="token boolean">false</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 输出: True</span>
</span><span class="code-line">Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span><span class="token boolean">false</span> <span class="token operator">^</span> <span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 输出: True</span>
</span><span class="code-line">Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span><span class="token boolean">false</span> <span class="token operator">^</span> <span class="token boolean">false</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">// 输出: False</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="逻辑或运算符-"><a aria-hidden="true" tabindex="-1" href="#逻辑或运算符-"><span class="icon icon-link"></span></a>逻辑或运算符 |</h3><div class="wrap-body">
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token return-type class-name"><span class="token keyword">bool</span></span> <span class="token function">SecondOperand</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span><span class="token string">"计算第二个操作数"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"> <span class="token keyword">return</span> <span class="token boolean">true</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token class-name"><span class="token keyword">bool</span></span> a <span class="token operator">=</span> <span class="token boolean">true</span> <span class="token operator">|</span> <span class="token function">SecondOperand</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span>a<span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token comment">// 输出:</span>
</span><span class="code-line"><span class="token comment">// 计算第二个操作数</span>
</span><span class="code-line"><span class="token comment">// True</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token class-name"><span class="token keyword">bool</span></span> b <span class="token operator">=</span> <span class="token boolean">false</span> <span class="token operator">|</span> <span class="token function">SecondOperand</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span>b<span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token comment">// 输出:</span>
</span><span class="code-line"><span class="token comment">// 计算第二个操作数</span>
</span><span class="code-line"><span class="token comment">// True</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="条件逻辑与运算符-"><a aria-hidden="true" tabindex="-1" href="#条件逻辑与运算符-"><span class="icon icon-link"></span></a>条件逻辑“与”运算符 &#x26;&#x26;</h3><div class="wrap-body">
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token return-type class-name"><span class="token keyword">bool</span></span> <span class="token function">SecondOperand</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span><span class="token string">"计算第二个操作数"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"> <span class="token keyword">return</span> <span class="token boolean">true</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token class-name"><span class="token keyword">bool</span></span> a <span class="token operator">=</span> <span class="token boolean">false</span> <span class="token operator">&#x26;&#x26;</span> <span class="token function">SecondOperand</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span>a<span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token comment">// 输出:</span>
</span><span class="code-line"><span class="token comment">// False</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token class-name"><span class="token keyword">bool</span></span> b <span class="token operator">=</span> <span class="token boolean">true</span> <span class="token operator">&#x26;&#x26;</span> <span class="token function">SecondOperand</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span>b<span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token comment">// 输出:</span>
</span><span class="code-line"><span class="token comment">// 计算第二个操作数</span>
</span><span class="code-line"><span class="token comment">// True</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="条件逻辑或运算符-"><a aria-hidden="true" tabindex="-1" href="#条件逻辑或运算符-"><span class="icon icon-link"></span></a>条件逻辑或运算符 ||</h3><div class="wrap-body">
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token return-type class-name"><span class="token keyword">bool</span></span> <span class="token function">SecondOperand</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span><span class="token string">"计算第二个操作数"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"> <span class="token keyword">return</span> <span class="token boolean">true</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token class-name"><span class="token keyword">bool</span></span> a <span class="token operator">=</span> <span class="token boolean">true</span> <span class="token operator">||</span> <span class="token function">SecondOperand</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span>a<span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token comment">// 输出:</span>
</span><span class="code-line"><span class="token comment">// True</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token class-name"><span class="token keyword">bool</span></span> b <span class="token operator">=</span> <span class="token boolean">false</span> <span class="token operator">||</span> <span class="token function">SecondOperand</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span>b<span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token comment">// 输出:</span>
</span><span class="code-line"><span class="token comment">// 计算第二个操作数</span>
</span><span class="code-line"><span class="token comment">// True</span>
</span></code></pre>
</div></div></div></div></div><div class="wrap h2body-exist"><div class="wrap-header h2wrap"><h2 id="类"><a aria-hidden="true" tabindex="-1" href="#类"><span class="icon icon-link"></span></a></h2><div class="wrap-body">
</div></div><div class="h2wrap-body"><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="成员变量"><a aria-hidden="true" tabindex="-1" href="#成员变量"><span class="icon icon-link"></span></a>成员变量</h3><div class="wrap-body">
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">MyClass</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token comment">// 私有变量</span>
</span><span class="code-line"> <span class="token keyword">private</span> <span class="token class-name"><span class="token keyword">int</span></span> myVariable<span class="token punctuation">;</span>
</span><span class="code-line"> <span class="token comment">// 公有属性</span>
</span><span class="code-line"> <span class="token keyword">public</span> <span class="token return-type class-name"><span class="token keyword">string</span></span> MyProperty <span class="token punctuation">{</span> <span class="token keyword">get</span><span class="token punctuation">;</span> <span class="token keyword">set</span><span class="token punctuation">;</span> <span class="token punctuation">}</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="静态成员"><a aria-hidden="true" tabindex="-1" href="#静态成员"><span class="icon icon-link"></span></a>静态成员</h3><div class="wrap-body">
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">MyClass</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token class-name"><span class="token keyword">int</span></span> StaticVariable <span class="token operator">=</span> <span class="token number">10</span><span class="token punctuation">;</span>
</span><span class="code-line"> <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token return-type class-name"><span class="token keyword">void</span></span> <span class="token function">StaticMethod</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token comment">// 静态方法体</span>
</span><span class="code-line"> <span class="token punctuation">}</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist row-span-2"><div class="wrap-header h3wrap"><h3 id="构造函数"><a aria-hidden="true" tabindex="-1" href="#构造函数"><span class="icon icon-link"></span></a>构造函数</h3><div class="wrap-body">
<!--rehype:wrap-class=row-span-2-->
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">MyClass</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token comment">// 默认构造函数</span>
</span><span class="code-line"> <span class="token keyword">public</span> <span class="token function">MyClass</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token comment">// 初始化代码</span>
</span><span class="code-line"> <span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"> <span class="token comment">// 自定义构造函数</span>
</span><span class="code-line"> <span class="token keyword">public</span> <span class="token function">MyClass</span><span class="token punctuation">(</span><span class="token class-name"><span class="token keyword">int</span></span> <span class="token keyword">value</span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token comment">// 使用传入的值初始化</span>
</span><span class="code-line"> <span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"> <span class="token comment">// 析构函数</span>
</span><span class="code-line"> <span class="token operator">~</span><span class="token function">MyClass</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token comment">// Destructor body.</span>
</span><span class="code-line"> <span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="方法"><a aria-hidden="true" tabindex="-1" href="#方法"><span class="icon icon-link"></span></a>方法</h3><div class="wrap-body">
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">MyClass</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token comment">// 无返回值方法</span>
</span><span class="code-line"> <span class="token keyword">public</span> <span class="token return-type class-name"><span class="token keyword">void</span></span> <span class="token function">MyMethod</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token comment">// 方法体</span>
</span><span class="code-line"> <span class="token punctuation">}</span>
</span><span class="code-line"> <span class="token comment">// 有返回值方法</span>
</span><span class="code-line"> <span class="token keyword">public</span> <span class="token return-type class-name"><span class="token keyword">int</span></span> <span class="token function">Add</span><span class="token punctuation">(</span><span class="token class-name"><span class="token keyword">int</span></span> a<span class="token punctuation">,</span> <span class="token class-name"><span class="token keyword">int</span></span> b<span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">return</span> a <span class="token operator">+</span> b<span class="token punctuation">;</span>
</span><span class="code-line"> <span class="token punctuation">}</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="属性"><a aria-hidden="true" tabindex="-1" href="#属性"><span class="icon icon-link"></span></a>属性</h3><div class="wrap-body">
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">MyClass</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">private</span> <span class="token class-name"><span class="token keyword">string</span></span> myField<span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"> <span class="token keyword">public</span> <span class="token return-type class-name"><span class="token keyword">string</span></span> MyProperty
</span><span class="code-line"> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">get</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> myField<span class="token punctuation">;</span> <span class="token punctuation">}</span>
</span><span class="code-line"> <span class="token keyword">set</span> <span class="token punctuation">{</span> myField <span class="token operator">=</span> <span class="token keyword">value</span><span class="token punctuation">;</span> <span class="token punctuation">}</span>
</span><span class="code-line"> <span class="token punctuation">}</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="接口"><a aria-hidden="true" tabindex="-1" href="#接口"><span class="icon icon-link"></span></a>接口</h3><div class="wrap-body">
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token keyword">public</span> <span class="token keyword">interface</span> <span class="token class-name">IMyInterface</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token return-type class-name"><span class="token keyword">void</span></span> <span class="token function">MyMethod</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 接口方法声明</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">MyClass</span> <span class="token punctuation">:</span> <span class="token type-list"><span class="token class-name">IMyInterface</span></span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">public</span> <span class="token return-type class-name"><span class="token keyword">void</span></span> <span class="token function">MyMethod</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment">// 实现接口方法</span>
</span><span class="code-line"> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token comment">// 实现代码</span>
</span><span class="code-line"> <span class="token punctuation">}</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist row-span-3"><div class="wrap-header h3wrap"><h3 id="继承"><a aria-hidden="true" tabindex="-1" href="#继承"><span class="icon icon-link"></span></a>继承</h3><div class="wrap-body">
<!--rehype:wrap-class=row-span-3-->
<p>注意</p>
<ul>
<li>在类定义中,只能有一个基类</li>
<li>继承了一个抽象类,必须实现所继承的所有抽象成员(除非派生类也是抽象的)</li>
<li>编译器不允许派生类的可访问性高于基类</li>
<li>内部类可以继承于一个公共基类,但公共类不能继承于一个内部基类</li>
</ul>
<p>因此,下述代码是合法的:</p>
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">MyBase</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token comment">// Class members.</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line"><span class="token keyword">internal</span> <span class="token keyword">class</span> <span class="token class-name">MyClass</span> <span class="token punctuation">:</span> <span class="token type-list"><span class="token class-name">MyBase</span></span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token comment">// Class members.</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
<p>下述代码不能编译:</p>
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token keyword">internal</span> <span class="token keyword">class</span> <span class="token class-name">MyBase</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token comment">// Class members.</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line"><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">MyClass</span> <span class="token punctuation">:</span> <span class="token type-list"><span class="token class-name">MyBase</span></span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token comment">// Class members.</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
<p>如果没有使用基类,被定义的类就只继承于基类 System.Object(它在 C# 中的别名是 object)。在继承层次结构中,所有类的根都是 <code>System.Object</code></p>
</div></div></div><div class="wrap h3body-not-exist row-span-2"><div class="wrap-header h3wrap"><h3 id="访问修饰符-1"><a aria-hidden="true" tabindex="-1" href="#访问修饰符-1"><span class="icon icon-link"></span></a>访问修饰符</h3><div class="wrap-body">
<!--rehype:wrap-class=row-span-2-->
<table class="style-list"><thead><tr><th align="left">:--</th><th align="left">:--</th></tr></thead><tbody><tr><td align="left"><code>public</code></td><td align="left">公有,可从任何位置访问</td></tr><tr><td align="left"><code>private</code></td><td align="left">私有,只能在当前类中访问</td></tr><tr><td align="left"><code>protected</code></td><td align="left">受保护,只能在当前类和派生类中访问</td></tr><tr><td align="left"><code>internal</code></td><td align="left">内部,只能在同一程序集中访问</td></tr><tr><td align="left"><code>protected internal</code></td><td align="left">受保护的内部,可以在同一程序集中的任何地方访问,以及派生类中</td></tr><tr><td align="left"><code>private protected</code></td><td align="left">私有保护,只能在同一程序集中的派生类中访问</td></tr></tbody></table>
<!--rehype:className=style-list-->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="字段的特殊修饰符"><a aria-hidden="true" tabindex="-1" href="#字段的特殊修饰符"><span class="icon icon-link"></span></a>字段的特殊修饰符</h3><div class="wrap-body">
<table class="left-align"><thead><tr><th>:--</th><th>:--</th></tr></thead><tbody><tr><td><code>readonly</code></td><td>表示这个字段只能在执行构造函数的过程中赋值,或由初始化赋值语句赋值</td></tr><tr><td><code>static</code></td><td>静态字段必须通过类名来访问例如Class.staticField</td></tr><tr><td><code>const</code></td><td>常量字段但同时也是静态字段自带static</td></tr></tbody></table>
<!--rehype:className=left-align-->
</div></div></div><div class="wrap h3body-not-exist row-span-2"><div class="wrap-header h3wrap"><h3 id="方法的特殊修饰符"><a aria-hidden="true" tabindex="-1" href="#方法的特殊修饰符"><span class="icon icon-link"></span></a>方法的特殊修饰符</h3><div class="wrap-body">
<!--rehype:wrap-class=row-span-2-->
<table class="left-align"><thead><tr><th>:--</th><th>:--</th></tr></thead><tbody><tr><td><code>static</code></td><td>静态方法,只能通过类名来调用方法</td></tr><tr><td><code>virtual</code></td><td>方法可以被重写</td></tr><tr><td><code>abstract</code></td><td>抽象方法,只用于抽象类</td></tr><tr><td><code>override</code></td><td>方法重写了基类的一个方法(如果方法被重写,就必须使用该关键字)。</td></tr><tr><td><code>extern</code></td><td>方法定义放在其他地方,可以在项目外部提供方法的实际实现代码</td></tr><tr><td><code>sealed</code></td><td>如果使用了 <code>override</code> ,也可以使用 <code>sealed</code> 来指定在派生类中不能再对这个方法进行进一步的修改,即这个方法不能被派生类重写</td></tr></tbody></table>
<!--rehype:className=left-align-->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="公共类"><a aria-hidden="true" tabindex="-1" href="#公共类"><span class="icon icon-link"></span></a>公共类</h3><div class="wrap-body">
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">MyClass</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token range operator">..</span><span class="token punctuation">.</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
<p>添加 <code>public</code> 声明为公共类</p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="私有类"><a aria-hidden="true" tabindex="-1" href="#私有类"><span class="icon icon-link"></span></a>私有类</h3><div class="wrap-body">
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token keyword">private</span> <span class="token keyword">class</span> <span class="token class-name">MyClass</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token range operator">..</span><span class="token punctuation">.</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
<p>添加 <code>public</code> 声明为公共类</p>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="命名约定"><a aria-hidden="true" tabindex="-1" href="#命名约定"><span class="icon icon-link"></span></a>命名约定</h3><div class="wrap-body">
<ul>
<li>类名使用 PascalCase 格式</li>
<li>成员变量和方法名使用 camelCase 格式</li>
<li>公有成员和类型名应该使用有意义的名字</li>
</ul>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="默认情况默认情况即为内部类"><a aria-hidden="true" tabindex="-1" href="#默认情况默认情况即为内部类"><span class="icon icon-link"></span></a>默认情况(默认情况即为内部类)</h3><div class="wrap-body">
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token keyword">class</span> <span class="token class-name">MyClass</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token range operator">..</span><span class="token punctuation">.</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line"><span class="token keyword">internal</span> <span class="token keyword">class</span> <span class="token class-name">MyCalss</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token range operator">..</span><span class="token punctuation">.</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
<p>上面两个类相同,声明为内部(<code>internal</code>)类,只能在当前项目中的代码才能访问它</p>
<hr>
<ul>
<li>抽象类与密封类为互斥关系</li>
<li>抽象类不能实例化,允许继承</li>
<li>可以有抽象成员,密封类不允许继承</li>
<li>都可以声明为公共类public和内部类internal</li>
</ul>
</div></div></div><div class="wrap h3body-exist"><div class="wrap-header h3wrap"><h3 id="抽象类与密封类"><a aria-hidden="true" tabindex="-1" href="#抽象类与密封类"><span class="icon icon-link"></span></a>抽象类与密封类</h3><div class="wrap-body">
<h4 id="抽象类abstract"><a aria-hidden="true" tabindex="-1" href="#抽象类abstract"><span class="icon icon-link"></span></a>抽象类abstract</h4>
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token keyword">public</span> <span class="token keyword">abstract</span> <span class="token keyword">class</span> <span class="token class-name">MyClass</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token comment">// 普通公共字段</span>
</span><span class="code-line"> <span class="token keyword">public</span> <span class="token class-name"><span class="token keyword">string</span></span> id<span class="token punctuation">;</span>
</span><span class="code-line"> <span class="token comment">// 抽象字段</span>
</span><span class="code-line"> <span class="token keyword">public</span> <span class="token keyword">abstract</span> <span class="token return-type class-name"><span class="token keyword">string</span></span> Name <span class="token punctuation">{</span> <span class="token keyword">get</span><span class="token punctuation">;</span> <span class="token punctuation">}</span>
</span><span class="code-line"> <span class="token comment">// 常量字段</span>
</span><span class="code-line"> <span class="token keyword">public</span> <span class="token keyword">const</span> <span class="token class-name"><span class="token keyword">string</span></span> Description <span class="token operator">=</span> <span class="token string">"常量"</span><span class="token punctuation">;</span>
</span><span class="code-line"> <span class="token comment">// 静态字段</span>
</span><span class="code-line"> <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token class-name"><span class="token keyword">string</span></span> Order <span class="token operator">=</span> <span class="token string">"静态"</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
<h4 id="密封类sealed"><a aria-hidden="true" tabindex="-1" href="#密封类sealed"><span class="icon icon-link"></span></a>密封类sealed</h4>
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token keyword">public</span> <span class="token keyword">sealed</span> <span class="token keyword">class</span> <span class="token class-name">MyClass</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token range operator">..</span><span class="token punctuation">.</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
</div></div></div></div></div><div class="wrap h2body-exist"><div class="wrap-header h2wrap"><h2 id="元组"><a aria-hidden="true" tabindex="-1" href="#元组"><span class="icon icon-link"></span></a>元组</h2><div class="wrap-body">
</div></div><div class="h2wrap-body"><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="基本使用"><a aria-hidden="true" tabindex="-1" href="#基本使用"><span class="icon icon-link"></span></a>基本使用</h3><div class="wrap-body">
<p>不带名称的基本元组创建</p>
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token punctuation">(</span>
</span><span class="code-line"> <span class="token class-name"><span class="token keyword">int</span></span> item1<span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token class-name"><span class="token keyword">string</span></span> item2<span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token class-name"><span class="token keyword">bool</span></span> item3
</span><span class="code-line"><span class="token punctuation">)</span> tuple1 <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> <span class="token string">"Hello"</span><span class="token punctuation">,</span> <span class="token boolean">true</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line">Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span>
</span><span class="code-line"> <span class="token interpolation-string"><span class="token string">$"Item1: </span><span class="token interpolation"><span class="token punctuation">{</span><span class="token expression language-csharp">tuple1<span class="token punctuation">.</span>Item1</span><span class="token punctuation">}</span></span><span class="token string">, "</span></span> <span class="token operator">+</span>
</span><span class="code-line"> <span class="token interpolation-string"><span class="token string">$"Item2: </span><span class="token interpolation"><span class="token punctuation">{</span><span class="token expression language-csharp">tuple1<span class="token punctuation">.</span>Item2</span><span class="token punctuation">}</span></span><span class="token string">, "</span></span> <span class="token operator">+</span>
</span><span class="code-line"> <span class="token interpolation-string"><span class="token string">$"Item3: </span><span class="token interpolation"><span class="token punctuation">{</span><span class="token expression language-csharp">tuple1<span class="token punctuation">.</span>Item3</span><span class="token punctuation">}</span></span><span class="token string">"</span></span>
</span><span class="code-line"><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span></code></pre>
<p>带名称的元组创建C# 7.0及以上版本)</p>
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token punctuation">(</span>
</span><span class="code-line"> <span class="token class-name"><span class="token keyword">string</span></span> FirstName<span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token class-name"><span class="token keyword">string</span></span> LastName<span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token class-name"><span class="token keyword">int</span></span> Age
</span><span class="code-line"><span class="token punctuation">)</span> person <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token string">"Alice"</span><span class="token punctuation">,</span> <span class="token string">"Smith"</span><span class="token punctuation">,</span> <span class="token number">30</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line">Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span>
</span><span class="code-line"> <span class="token interpolation-string"><span class="token string">$"First Name: </span><span class="token interpolation"><span class="token punctuation">{</span><span class="token expression language-csharp">person<span class="token punctuation">.</span>FirstName</span><span class="token punctuation">}</span></span><span class="token string">, "</span></span> <span class="token operator">+</span>
</span><span class="code-line"> <span class="token interpolation-string"><span class="token string">$"Last Name: </span><span class="token interpolation"><span class="token punctuation">{</span><span class="token expression language-csharp">person<span class="token punctuation">.</span>LastName</span><span class="token punctuation">}</span></span><span class="token string">, "</span></span> <span class="token operator">+</span>
</span><span class="code-line"> <span class="token interpolation-string"><span class="token string">$"Age: </span><span class="token interpolation"><span class="token punctuation">{</span><span class="token expression language-csharp">person<span class="token punctuation">.</span>Age</span><span class="token punctuation">}</span></span><span class="token string">"</span></span>
</span><span class="code-line"><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="方法调用与接收"><a aria-hidden="true" tabindex="-1" href="#方法调用与接收"><span class="icon icon-link"></span></a>方法调用与接收</h3><div class="wrap-body">
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token keyword">public</span> <span class="token return-type class-name"><span class="token punctuation">(</span><span class="token keyword">int</span> Id<span class="token punctuation">,</span> <span class="token keyword">string</span> Name<span class="token punctuation">,</span> <span class="token keyword">double</span> Score<span class="token punctuation">)</span></span> <span class="token function">GetStudentInfo</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">return</span> <span class="token punctuation">(</span><span class="token number">123</span><span class="token punctuation">,</span> <span class="token string">"John Doe"</span><span class="token punctuation">,</span> <span class="token number">95.5</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
<p>使用</p>
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token punctuation">(</span>
</span><span class="code-line"> <span class="token class-name"><span class="token keyword">var</span></span> id<span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token class-name"><span class="token keyword">var</span></span> name<span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token class-name"><span class="token keyword">var</span></span> score
</span><span class="code-line"><span class="token punctuation">)</span> <span class="token operator">=</span> <span class="token function">GetStudentInfo</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line">Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span>
</span><span class="code-line"> <span class="token interpolation-string"><span class="token string">$"Id: </span><span class="token interpolation"><span class="token punctuation">{</span><span class="token expression language-csharp">id</span><span class="token punctuation">}</span></span><span class="token string">, "</span></span> <span class="token operator">+</span>
</span><span class="code-line"> <span class="token interpolation-string"><span class="token string">$"Name: </span><span class="token interpolation"><span class="token punctuation">{</span><span class="token expression language-csharp">name</span><span class="token punctuation">}</span></span><span class="token string">, "</span></span> <span class="token operator">+</span>
</span><span class="code-line"> <span class="token interpolation-string"><span class="token string">$"Score: </span><span class="token interpolation"><span class="token punctuation">{</span><span class="token expression language-csharp">score</span><span class="token punctuation">}</span></span><span class="token string">"</span></span>
</span><span class="code-line"><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="类中使用元组"><a aria-hidden="true" tabindex="-1" href="#类中使用元组"><span class="icon icon-link"></span></a>类中使用元组</h3><div class="wrap-body">
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Student</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">public</span> <span class="token return-type class-name"><span class="token keyword">int</span></span> Id <span class="token punctuation">{</span> <span class="token keyword">get</span><span class="token punctuation">;</span> <span class="token keyword">set</span><span class="token punctuation">;</span> <span class="token punctuation">}</span>
</span><span class="code-line"> <span class="token keyword">public</span> <span class="token return-type class-name"><span class="token keyword">string</span></span> Name <span class="token punctuation">{</span> <span class="token keyword">get</span><span class="token punctuation">;</span> <span class="token keyword">set</span><span class="token punctuation">;</span> <span class="token punctuation">}</span>
</span><span class="code-line"> <span class="token keyword">public</span> <span class="token return-type class-name"><span class="token keyword">double</span></span> GPA <span class="token punctuation">{</span> <span class="token keyword">get</span><span class="token punctuation">;</span> <span class="token keyword">set</span><span class="token punctuation">;</span> <span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"> <span class="token keyword">public</span> <span class="token return-type class-name"><span class="token keyword">void</span></span> <span class="token function">Deconstruct</span><span class="token punctuation">(</span><span class="token keyword">out</span> <span class="token class-name"><span class="token keyword">int</span></span> id<span class="token punctuation">,</span> <span class="token keyword">out</span> <span class="token class-name"><span class="token keyword">string</span></span> name<span class="token punctuation">,</span> <span class="token keyword">out</span> <span class="token class-name"><span class="token keyword">double</span></span> gpa<span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token punctuation">{</span>
</span><span class="code-line"> id <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>Id<span class="token punctuation">;</span>
</span><span class="code-line"> name <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>Name<span class="token punctuation">;</span>
</span><span class="code-line"> gpa <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">.</span>GPA<span class="token punctuation">;</span>
</span><span class="code-line"> <span class="token punctuation">}</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
<p>使用Deconstruct方法创建元组</p>
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token class-name">Student</span> student <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Student</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> Id <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">,</span>
</span><span class="code-line"> Name <span class="token operator">=</span> <span class="token string">"Jane"</span><span class="token punctuation">,</span>
</span><span class="code-line"> GPA <span class="token operator">=</span> <span class="token number">3.8</span>
</span><span class="code-line"><span class="token punctuation">}</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token punctuation">(</span><span class="token class-name"><span class="token keyword">int</span></span> id<span class="token punctuation">,</span> <span class="token class-name"><span class="token keyword">string</span></span> name<span class="token punctuation">,</span> <span class="token class-name"><span class="token keyword">double</span></span> gpa<span class="token punctuation">)</span> <span class="token operator">=</span> student<span class="token punctuation">;</span>
</span><span class="code-line">Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span><span class="token interpolation-string"><span class="token string">$"Student Id: </span><span class="token interpolation"><span class="token punctuation">{</span><span class="token expression language-csharp">id</span><span class="token punctuation">}</span></span><span class="token string">, Name: </span><span class="token interpolation"><span class="token punctuation">{</span><span class="token expression language-csharp">name</span><span class="token punctuation">}</span></span><span class="token string">, GPA: </span><span class="token interpolation"><span class="token punctuation">{</span><span class="token expression language-csharp">gpa</span><span class="token punctuation">}</span></span><span class="token string">"</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span></code></pre>
</div></div></div></div></div><div class="wrap h2body-exist"><div class="wrap-header h2wrap"><h2 id="集合"><a aria-hidden="true" tabindex="-1" href="#集合"><span class="icon icon-link"></span></a>集合</h2><div class="wrap-body">
</div></div><div class="h2wrap-body"><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="c集合"><a aria-hidden="true" tabindex="-1" href="#c集合"><span class="icon icon-link"></span></a>c#集合</h3><div class="wrap-body">
<table><thead><tr><th align="left">集合</th><th align="left">有序</th><th align="left">已排序</th><th align="left">线程安全</th><th align="left">允许空值</th></tr></thead><tbody><tr><td align="left"><a href="https://docs.microsoft.com/dotnet/api/system.collections.generic.list-1">List</a></td><td align="left">Y</td><td align="left"><em>N</em></td><td align="left"><em>N</em></td><td align="left"></td></tr><tr><td align="left"><a href="https://docs.microsoft.com/dotnet/api/system.collections.arraylist">ArrayList</a> (非泛型)</td><td align="left">Y</td><td align="left"><em>N</em></td><td align="left"><em>N</em></td><td align="left"></td></tr><tr><td align="left"><a href="https://docs.microsoft.com/dotnet/api/system.collections.vector">Vector</a> (非泛型)</td><td align="left">N</td><td align="left"><em>N</em></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left"><a href="https://docs.microsoft.com/dotnet/api/system.collections.generic.linkedlist-1">LinkedList</a></td><td align="left">Y</td><td align="left"><em>N</em></td><td align="left"><em>N</em></td><td align="left"></td></tr><tr><td align="left"><a href="https://docs.microsoft.com/dotnet/api/system.collections.concurrent.concurrentbag-1">ConcurrentBag</a></td><td align="left"><em>N</em></td><td align="left"><em>N</em></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left"><a href="https://docs.microsoft.com/dotnet/api/system.collections.generic.hashset-1">HashSet</a></td><td align="left"><em>N</em></td><td align="left"><em>N</em></td><td align="left"><em>N</em></td><td align="left"></td></tr><tr><td align="left"><a href="https://docs.microsoft.com/dotnet/api/system.collections.generic.sortedset-1">SortedSet</a></td><td align="left">Y</td><td align="left">Y</td><td align="left"><em>N</em></td><td align="left"></td></tr><tr><td align="left"><a href="https://docs.microsoft.com/dotnet/api/system.collections.concurrent.concurrentdictionary-2">ConcurrentDictionary</a></td><td align="left">Y</td><td align="left"><em>N</em></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left"><a href="https://docs.microsoft.com/dotnet/api/system.collections.generic.dictionary-2">Dictionary</a></td><td align="left"><em>N</em></td><td align="left"><em>N</em></td><td align="left"><em>N</em></td><td align="left"></td></tr><tr><td align="left"><a href="https://docs.microsoft.com/dotnet/api/system.collections.generic.sorteddictionary-2">SortedDictionary</a></td><td align="left">Y</td><td align="left">Y</td><td align="left"><em>N</em></td><td align="left"></td></tr><tr><td align="left"><a href="https://docs.microsoft.com/dotnet/api/system.collections.generic.stack-1">Stack</a></td><td align="left"><em>N</em></td><td align="left"><em>N</em></td><td align="left"><em>N</em></td><td align="left"></td></tr><tr><td align="left"><a href="https://docs.microsoft.com/dotnet/api/system.collections.generic.queue-1">Queue</a></td><td align="left"><em>N</em></td><td align="left"><em>N</em></td><td align="left"><em>N</em></td><td align="left"></td></tr><tr><td align="left"><a href="https://docs.microsoft.com/dotnet/api/system.collections.concurrent.concurrentqueue-1">ConcurrentQueue</a></td><td align="left"><em>N</em></td><td align="left"><em>N</em></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left"><a href="https://docs.microsoft.com/dotnet/api/system.collections.concurrent.concurrentstack-1">ConcurrentStack</a></td><td align="left"><em>N</em></td><td align="left"><em>N</em></td><td align="left">Y</td><td align="left"></td></tr><tr><td align="left"><a href="https://learn.microsoft.com/zh-cn/dotnet/api/system.collections.hashtable?view=net-6.0">HashTable</a></td><td align="left">N</td><td align="left">Y</td><td align="left">Y</td><td align="left"></td></tr></tbody></table>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="list"><a aria-hidden="true" tabindex="-1" href="#list"><span class="icon icon-link"></span></a>List</h3><div class="wrap-body">
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token comment">// 创建一个整数类型的List</span>
</span><span class="code-line"><span class="token class-name">List<span class="token punctuation">&#x3C;</span><span class="token keyword">int</span><span class="token punctuation">></span></span> numbers <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">List<span class="token punctuation">&#x3C;</span><span class="token keyword">int</span><span class="token punctuation">></span></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 增加Add</span>
</span><span class="code-line">numbers<span class="token punctuation">.</span><span class="token function">Add</span><span class="token punctuation">(</span><span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">numbers<span class="token punctuation">.</span><span class="token function">Add</span><span class="token punctuation">(</span><span class="token number">20</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token comment">//增加3040两个元素</span>
</span><span class="code-line">numbers<span class="token punctuation">.</span><span class="token function">AddRange</span><span class="token punctuation">(</span><span class="token keyword">new</span><span class="token punctuation">[</span><span class="token punctuation">]</span> <span class="token punctuation">{</span> <span class="token number">30</span><span class="token punctuation">,</span> <span class="token number">40</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 删除Remove</span>
</span><span class="code-line"><span class="token keyword">if</span> <span class="token punctuation">(</span>numbers<span class="token punctuation">.</span><span class="token function">Contains</span><span class="token punctuation">(</span><span class="token number">20</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> numbers<span class="token punctuation">.</span><span class="token function">Remove</span><span class="token punctuation">(</span><span class="token number">20</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 修改(更改特定索引处的元素)</span>
</span><span class="code-line">numbers<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">50</span><span class="token punctuation">;</span> <span class="token comment">// 直接替换元素</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 查询Find/Contains</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">bool</span></span> isPresent <span class="token operator">=</span> numbers<span class="token punctuation">.</span><span class="token function">Contains</span><span class="token punctuation">(</span><span class="token number">50</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 查找索引</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">int</span></span> index <span class="token operator">=</span> numbers<span class="token punctuation">.</span><span class="token function">IndexOf</span><span class="token punctuation">(</span><span class="token number">40</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token keyword">if</span> <span class="token punctuation">(</span>index <span class="token operator">!=</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> numbers<span class="token punctuation">[</span>index<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">45</span><span class="token punctuation">;</span> <span class="token comment">// 修改找到的元素</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="hashset"><a aria-hidden="true" tabindex="-1" href="#hashset"><span class="icon icon-link"></span></a>HashSet</h3><div class="wrap-body">
<pre class="wrap-text"><code class="language-cs code-highlight"><span class="code-line"><span class="token comment">// 创建一个字符串类型的HashSet</span>
</span><span class="code-line"><span class="token class-name">HashSet<span class="token punctuation">&#x3C;</span><span class="token keyword">string</span><span class="token punctuation">></span></span> words <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">HashSet<span class="token punctuation">&#x3C;</span><span class="token keyword">string</span><span class="token punctuation">></span></span> <span class="token punctuation">{</span> <span class="token string">"apple"</span><span class="token punctuation">,</span> <span class="token string">"banana"</span> <span class="token punctuation">}</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 增加Add</span>
</span><span class="code-line">words<span class="token punctuation">.</span><span class="token function">Add</span><span class="token punctuation">(</span><span class="token string">"cherry"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 返回 false因为"apple"已存在</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">bool</span></span> wasAdded <span class="token operator">=</span> words<span class="token punctuation">.</span><span class="token function">Add</span><span class="token punctuation">(</span><span class="token string">"apple"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 删除Remove</span>
</span><span class="code-line">words<span class="token punctuation">.</span><span class="token function">Remove</span><span class="token punctuation">(</span><span class="token string">"banana"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 修改 - HashSet不允许直接修改元素</span>
</span><span class="code-line"><span class="token comment">// 需删除后重新添加</span>
</span><span class="code-line"><span class="token keyword">if</span> <span class="token punctuation">(</span>words<span class="token punctuation">.</span><span class="token function">Contains</span><span class="token punctuation">(</span><span class="token string">"cherry"</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> words<span class="token punctuation">.</span><span class="token function">Remove</span><span class="token punctuation">(</span><span class="token string">"cherry"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"> words<span class="token punctuation">.</span><span class="token function">Add</span><span class="token punctuation">(</span><span class="token string">"cherries"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 查询Contains</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">bool</span></span> containsCherries <span class="token operator">=</span> words<span class="token punctuation">.</span><span class="token function">Contains</span><span class="token punctuation">(</span><span class="token string">"cherries"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span></code></pre>
<!--rehype:className=wrap-text-->
</div></div></div><div class="wrap h3body-not-exist col-span-2"><div class="wrap-header h3wrap"><h3 id="concurrentbag"><a aria-hidden="true" tabindex="-1" href="#concurrentbag"><span class="icon icon-link"></span></a>ConcurrentBag</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2-->
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token comment">// 创建一个并发安全的整数集合</span>
</span><span class="code-line"><span class="token class-name">ConcurrentBag<span class="token punctuation">&#x3C;</span><span class="token keyword">int</span><span class="token punctuation">></span></span> concurrentNumbers <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">ConcurrentBag<span class="token punctuation">&#x3C;</span><span class="token keyword">int</span><span class="token punctuation">></span></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 增加Add</span>
</span><span class="code-line">concurrentNumbers<span class="token punctuation">.</span><span class="token function">Add</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">concurrentNumbers<span class="token punctuation">.</span><span class="token function">Add</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 删除由于ConcurrentBag没有直接的Remove方法只能通过迭代并尝试移除</span>
</span><span class="code-line"><span class="token keyword">foreach</span> <span class="token punctuation">(</span><span class="token class-name"><span class="token keyword">var</span></span> number <span class="token keyword">in</span> concurrentNumbers<span class="token punctuation">.</span><span class="token function">ToArray</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> concurrentNumbers<span class="token punctuation">.</span><span class="token function">TryTake</span><span class="token punctuation">(</span><span class="token keyword">out</span> _number<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 并发安全地移除一个元素</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
<p>修改(无法直接修改,同样需先移除再添加,但由于并发特性,不能保证一定能修改目标元素)。
在并发环境下尤其复杂,此处省略示例</p>
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token comment">// 查询Contains</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">bool</span></span> hasOne <span class="token operator">=</span> concurrentNumbers<span class="token punctuation">.</span><span class="token function">Contains</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="stack"><a aria-hidden="true" tabindex="-1" href="#stack"><span class="icon icon-link"></span></a>Stack</h3><div class="wrap-body">
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token comment">// 创建一个整数栈</span>
</span><span class="code-line"><span class="token class-name">Stack<span class="token punctuation">&#x3C;</span><span class="token keyword">int</span><span class="token punctuation">></span></span> stack <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Stack<span class="token punctuation">&#x3C;</span><span class="token keyword">int</span><span class="token punctuation">></span></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">stack<span class="token punctuation">.</span><span class="token function">Push</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">stack<span class="token punctuation">.</span><span class="token function">Push</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 增加Push</span>
</span><span class="code-line">stack<span class="token punctuation">.</span><span class="token function">Push</span><span class="token punctuation">(</span><span class="token number">3</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 删除Pop并返回栈顶元素</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">int</span></span> topNumber <span class="token operator">=</span> stack<span class="token punctuation">.</span><span class="token function">Pop</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 修改Stack不支持直接修改元素需先Pop再Push</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">int</span></span> poppedValue <span class="token operator">=</span> stack<span class="token punctuation">.</span><span class="token function">Pop</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token comment">// 替换刚弹出的值</span>
</span><span class="code-line">stack<span class="token punctuation">.</span><span class="token function">Push</span><span class="token punctuation">(</span>poppedValue <span class="token operator">*</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 查询Peek / Contains 但不移除栈顶元素</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">int</span></span> peekedValue <span class="token operator">=</span> stack<span class="token punctuation">.</span><span class="token function">Peek</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">bool</span></span> hasTwo <span class="token operator">=</span> stack<span class="token punctuation">.</span><span class="token function">Contains</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist col-span-2"><div class="wrap-header h3wrap"><h3 id="dictionary"><a aria-hidden="true" tabindex="-1" href="#dictionary"><span class="icon icon-link"></span></a>Dictionary</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2-->
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token comment">// 创建一个键值对字典</span>
</span><span class="code-line"><span class="token class-name">Dictionary<span class="token punctuation">&#x3C;</span><span class="token keyword">string</span><span class="token punctuation">,</span> <span class="token keyword">int</span><span class="token punctuation">></span></span> scores <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Dictionary<span class="token punctuation">&#x3C;</span><span class="token keyword">string</span><span class="token punctuation">,</span> <span class="token keyword">int</span><span class="token punctuation">></span></span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token punctuation">{</span> <span class="token string">"Alice"</span><span class="token punctuation">,</span> <span class="token number">85</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token punctuation">{</span> <span class="token string">"Bob"</span><span class="token punctuation">,</span> <span class="token number">90</span> <span class="token punctuation">}</span>
</span><span class="code-line"><span class="token punctuation">}</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 增加Add</span>
</span><span class="code-line">scores<span class="token punctuation">.</span><span class="token function">Add</span><span class="token punctuation">(</span><span class="token string">"Charlie"</span><span class="token punctuation">,</span> <span class="token number">88</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 删除Remove</span>
</span><span class="code-line">scores<span class="token punctuation">.</span><span class="token function">Remove</span><span class="token punctuation">(</span><span class="token string">"Bob"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 修改Update</span>
</span><span class="code-line"><span class="token keyword">if</span> <span class="token punctuation">(</span>scores<span class="token punctuation">.</span><span class="token function">ContainsKey</span><span class="token punctuation">(</span><span class="token string">"Alice"</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> scores<span class="token punctuation">[</span><span class="token string">"Alice"</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token number">90</span><span class="token punctuation">;</span> <span class="token comment">// 直接替换值</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 查询ContainsKey / GetValueOrDefault</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">bool</span></span> aliceExists <span class="token operator">=</span> scores<span class="token punctuation">.</span><span class="token function">ContainsKey</span><span class="token punctuation">(</span><span class="token string">"Alice"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">int</span></span> charlieScore <span class="token operator">=</span> scores<span class="token punctuation">.</span><span class="token function">GetValueOrDefault</span><span class="token punctuation">(</span><span class="token string">"Charlie"</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="hashtable"><a aria-hidden="true" tabindex="-1" href="#hashtable"><span class="icon icon-link"></span></a>Hashtable</h3><div class="wrap-body">
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token comment">// 创建一个哈希表</span>
</span><span class="code-line"><span class="token class-name">Hashtable</span> hashTable <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Hashtable</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">hashTable<span class="token punctuation">.</span><span class="token function">Add</span><span class="token punctuation">(</span><span class="token string">"key1"</span><span class="token punctuation">,</span> <span class="token string">"value1"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">hashTable<span class="token punctuation">.</span><span class="token function">Add</span><span class="token punctuation">(</span><span class="token string">"key2"</span><span class="token punctuation">,</span> <span class="token string">"value2"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 增加Add</span>
</span><span class="code-line">hashTable<span class="token punctuation">.</span><span class="token function">Add</span><span class="token punctuation">(</span><span class="token string">"key3"</span><span class="token punctuation">,</span> <span class="token string">"value3"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 删除Remove</span>
</span><span class="code-line">hashTable<span class="token punctuation">.</span><span class="token function">Remove</span><span class="token punctuation">(</span><span class="token string">"key1"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 修改Replace</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">object</span></span> oldValue<span class="token punctuation">;</span>
</span><span class="code-line"><span class="token keyword">if</span> <span class="token punctuation">(</span>hashTable<span class="token punctuation">.</span><span class="token function">ContainsKey</span><span class="token punctuation">(</span><span class="token string">"key2"</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> oldValue <span class="token operator">=</span> hashTable<span class="token punctuation">[</span><span class="token string">"key2"</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
</span><span class="code-line"> hashTable<span class="token punctuation">[</span><span class="token string">"key2"</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token string">"new_value2"</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 查询Contains / GetValue</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">bool</span></span> hasKey2 <span class="token operator">=</span> hashTable<span class="token punctuation">.</span><span class="token function">ContainsKey</span><span class="token punctuation">(</span><span class="token string">"key2"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">string</span></span> valueOfKey2 <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token keyword">string</span><span class="token punctuation">)</span>hashTable<span class="token punctuation">[</span><span class="token string">"key2"</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
</span></code></pre>
</div></div></div></div></div><div class="wrap h2body-exist"><div class="wrap-header h2wrap"><h2 id="linq"><a aria-hidden="true" tabindex="-1" href="#linq"><span class="icon icon-link"></span></a>LINQ</h2><div class="wrap-body">
<blockquote>
<p>C#语言中的LINQLanguage-Integrated Query是一种强大的查询语言它提供了一种统一的编程模型使得数据查询变得更加直观和简洁。</p>
</blockquote>
</div></div><div class="h2wrap-body"><div class="wrap h3body-not-exist col-span-3"><div class="wrap-header h3wrap"><h3 id="from"><a aria-hidden="true" tabindex="-1" href="#from"><span class="icon icon-link"></span></a>FROM</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-3-->
<blockquote>
<p>任何数据源包括对象集合、数据库、XML等。</p>
</blockquote>
</div></div></div><div class="wrap h3body-not-exist col-span-2"><div class="wrap-header h3wrap"><h3 style="background:#e91e63;" id="where"><a aria-hidden="true" tabindex="-1" href="#where"><span class="icon icon-link"></span></a>WHERE</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2&style=background:#e91e63;-->
<blockquote>
<p>条件查询</p>
</blockquote>
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token comment">// 示例数据源</span>
</span><span class="code-line"><span class="token class-name">List<span class="token punctuation">&#x3C;</span>Student<span class="token punctuation">></span></span> students <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">List<span class="token punctuation">&#x3C;</span>Student<span class="token punctuation">></span></span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Student</span> <span class="token punctuation">{</span> Name <span class="token operator">=</span> <span class="token string">"Alice"</span><span class="token punctuation">,</span> Age <span class="token operator">=</span> <span class="token number">25</span><span class="token punctuation">,</span> Grade <span class="token operator">=</span> <span class="token string">"A"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Student</span> <span class="token punctuation">{</span> Name <span class="token operator">=</span> <span class="token string">"Bob"</span><span class="token punctuation">,</span> Age <span class="token operator">=</span> <span class="token number">30</span><span class="token punctuation">,</span> Grade <span class="token operator">=</span> <span class="token string">"B"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Student</span> <span class="token punctuation">{</span> Name <span class="token operator">=</span> <span class="token string">"Barry"</span><span class="token punctuation">,</span> Age <span class="token operator">=</span> <span class="token number">35</span><span class="token punctuation">,</span> Grade <span class="token operator">=</span> <span class="token string">"C"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Student</span> <span class="token punctuation">{</span> Name <span class="token operator">=</span> <span class="token string">"Charlie"</span><span class="token punctuation">,</span> Age <span class="token operator">=</span> <span class="token number">22</span><span class="token punctuation">,</span> Grade <span class="token operator">=</span> <span class="token string">"A"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Student</span> <span class="token punctuation">{</span> Name <span class="token operator">=</span> <span class="token string">"David"</span><span class="token punctuation">,</span> Age <span class="token operator">=</span> <span class="token number">21</span><span class="token punctuation">,</span> Grade <span class="token operator">=</span> <span class="token string">"C"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Student</span> <span class="token punctuation">{</span> Name <span class="token operator">=</span> <span class="token string">"Damon"</span><span class="token punctuation">,</span> Age <span class="token operator">=</span> <span class="token number">28</span><span class="token punctuation">,</span> Grade <span class="token operator">=</span> <span class="token string">"B"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Student</span> <span class="token punctuation">{</span> Name <span class="token operator">=</span> <span class="token string">"Echo"</span><span class="token punctuation">,</span> Age <span class="token operator">=</span> <span class="token number">18</span><span class="token punctuation">,</span> Grade <span class="token operator">=</span> <span class="token string">"C"</span> <span class="token punctuation">}</span>
</span><span class="code-line"><span class="token punctuation">}</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 使用WHERE筛选出成绩为A的学生</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">var</span></span> result1 <span class="token operator">=</span> students<span class="token punctuation">.</span><span class="token function">Where</span><span class="token punctuation">(</span>student <span class="token operator">=></span> student<span class="token punctuation">.</span>Grade <span class="token operator">=</span> <span class="token string">"A"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 使用WHERE筛选出年龄大于20的学生</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">var</span></span> result2 <span class="token operator">=</span> students<span class="token punctuation">.</span><span class="token function">Where</span><span class="token punctuation">(</span>student <span class="token operator">=></span> student<span class="token punctuation">.</span>Age <span class="token operator">></span> <span class="token number">20</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 使用WHERE筛选出名字包含'D'的学生</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">var</span></span> result3 <span class="token operator">=</span> students<span class="token punctuation">.</span><span class="token function">Where</span><span class="token punctuation">(</span>student <span class="token operator">=></span> student<span class="token punctuation">.</span>Name<span class="token punctuation">.</span><span class="token function">Contains</span><span class="token punctuation">(</span><span class="token string">"D"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 使用WHERE筛选出名字为'Bob'和'Echo'的学生</span>
</span><span class="code-line"><span class="token class-name">List<span class="token punctuation">&#x3C;</span><span class="token keyword">string</span><span class="token punctuation">></span></span> nameList <span class="token operator">=</span> <span class="token keyword">new</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token string">"Bob"</span><span class="token punctuation">,</span> <span class="token string">"Echo"</span> <span class="token punctuation">}</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">var</span></span> result4 <span class="token operator">=</span> students<span class="token punctuation">.</span><span class="token function">Where</span><span class="token punctuation">(</span>student <span class="token operator">=></span> nameList<span class="token punctuation">.</span><span class="token function">Contains</span><span class="token punctuation">(</span>student<span class="token punctuation">.</span>Name<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="groupby"><a aria-hidden="true" tabindex="-1" href="#groupby"><span class="icon icon-link"></span></a>GROUPBY</h3><div class="wrap-body">
<blockquote>
<p>分组查询</p>
</blockquote>
<pre class="wrap-text"><code class="language-cs code-highlight"><span class="code-line"><span class="token comment">// 示例数据源</span>
</span><span class="code-line"><span class="token class-name">List<span class="token punctuation">&#x3C;</span>Student<span class="token punctuation">></span></span> students <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">List<span class="token punctuation">&#x3C;</span>Student<span class="token punctuation">></span></span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Student</span> <span class="token punctuation">{</span> Name <span class="token operator">=</span> <span class="token string">"Alice"</span><span class="token punctuation">,</span> Age <span class="token operator">=</span> <span class="token number">25</span><span class="token punctuation">,</span> Grade <span class="token operator">=</span> <span class="token string">"A"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Student</span> <span class="token punctuation">{</span> Name <span class="token operator">=</span> <span class="token string">"Bob"</span><span class="token punctuation">,</span> Age <span class="token operator">=</span> <span class="token number">30</span><span class="token punctuation">,</span> Grade <span class="token operator">=</span> <span class="token string">"B"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Student</span> <span class="token punctuation">{</span> Name <span class="token operator">=</span> <span class="token string">"Barry"</span><span class="token punctuation">,</span> Age <span class="token operator">=</span> <span class="token number">35</span><span class="token punctuation">,</span> Grade <span class="token operator">=</span> <span class="token string">"C"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Student</span> <span class="token punctuation">{</span> Name <span class="token operator">=</span> <span class="token string">"Charlie"</span><span class="token punctuation">,</span> Age <span class="token operator">=</span> <span class="token number">22</span><span class="token punctuation">,</span> Grade <span class="token operator">=</span> <span class="token string">"A"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Student</span> <span class="token punctuation">{</span> Name <span class="token operator">=</span> <span class="token string">"David"</span><span class="token punctuation">,</span> Age <span class="token operator">=</span> <span class="token number">21</span><span class="token punctuation">,</span> Grade <span class="token operator">=</span> <span class="token string">"C"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Student</span> <span class="token punctuation">{</span> Name <span class="token operator">=</span> <span class="token string">"Damon"</span><span class="token punctuation">,</span> Age <span class="token operator">=</span> <span class="token number">28</span><span class="token punctuation">,</span> Grade <span class="token operator">=</span> <span class="token string">"B"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Student</span> <span class="token punctuation">{</span> Name <span class="token operator">=</span> <span class="token string">"Echo"</span><span class="token punctuation">,</span> Age <span class="token operator">=</span> <span class="token number">18</span><span class="token punctuation">,</span> Grade <span class="token operator">=</span> <span class="token string">"C"</span> <span class="token punctuation">}</span>
</span><span class="code-line"><span class="token punctuation">}</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 使用GROUP BY按成绩进行分组查询</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">var</span></span> groupedByGrade <span class="token operator">=</span> students<span class="token punctuation">.</span><span class="token function">GroupBy</span><span class="token punctuation">(</span>student <span class="token operator">=></span> student<span class="token punctuation">.</span>Grade<span class="token punctuation">)</span><span class="token punctuation">;</span>
</span></code></pre>
<!--rehype:className=wrap-text-->
</div></div></div><div class="wrap h3body-not-exist col-span-2"><div class="wrap-header h3wrap"><h3 style="background:#e91e63;" id="select"><a aria-hidden="true" tabindex="-1" href="#select"><span class="icon icon-link"></span></a>SELECT</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2&style=background:#e91e63;-->
<blockquote>
<p>结果查询</p>
</blockquote>
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token comment">// 示例数据源</span>
</span><span class="code-line"><span class="token class-name">List<span class="token punctuation">&#x3C;</span>Student<span class="token punctuation">></span></span> students <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">List<span class="token punctuation">&#x3C;</span>Student<span class="token punctuation">></span></span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Student</span> <span class="token punctuation">{</span> Name <span class="token operator">=</span> <span class="token string">"Alice"</span><span class="token punctuation">,</span> Age <span class="token operator">=</span> <span class="token number">25</span><span class="token punctuation">,</span> Grade <span class="token operator">=</span> <span class="token string">"A"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Student</span> <span class="token punctuation">{</span> Name <span class="token operator">=</span> <span class="token string">"Bob"</span><span class="token punctuation">,</span> Age <span class="token operator">=</span> <span class="token number">30</span><span class="token punctuation">,</span> Grade <span class="token operator">=</span> <span class="token string">"B"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Student</span> <span class="token punctuation">{</span> Name <span class="token operator">=</span> <span class="token string">"Barry"</span><span class="token punctuation">,</span> Age <span class="token operator">=</span> <span class="token number">35</span><span class="token punctuation">,</span> Grade <span class="token operator">=</span> <span class="token string">"C"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Student</span> <span class="token punctuation">{</span> Name <span class="token operator">=</span> <span class="token string">"Charlie"</span><span class="token punctuation">,</span> Age <span class="token operator">=</span> <span class="token number">22</span><span class="token punctuation">,</span> Grade <span class="token operator">=</span> <span class="token string">"A"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Student</span> <span class="token punctuation">{</span> Name <span class="token operator">=</span> <span class="token string">"David"</span><span class="token punctuation">,</span> Age <span class="token operator">=</span> <span class="token number">21</span><span class="token punctuation">,</span> Grade <span class="token operator">=</span> <span class="token string">"C"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Student</span> <span class="token punctuation">{</span> Name <span class="token operator">=</span> <span class="token string">"Damon"</span><span class="token punctuation">,</span> Age <span class="token operator">=</span> <span class="token number">28</span><span class="token punctuation">,</span> Grade <span class="token operator">=</span> <span class="token string">"B"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Student</span> <span class="token punctuation">{</span> Name <span class="token operator">=</span> <span class="token string">"Echo"</span><span class="token punctuation">,</span> Age <span class="token operator">=</span> <span class="token number">18</span><span class="token punctuation">,</span> Grade <span class="token operator">=</span> <span class="token string">"C"</span> <span class="token punctuation">}</span>
</span><span class="code-line"><span class="token punctuation">}</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 使用SELECT创建一个新的匿名类并输出为集合一般配合Where使用</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">var</span></span> result1 <span class="token operator">=</span> students<span class="token punctuation">.</span><span class="token function">Select</span><span class="token punctuation">(</span>student <span class="token operator">=></span>
</span><span class="code-line"> <span class="token keyword">new</span>
</span><span class="code-line"> <span class="token punctuation">{</span>
</span><span class="code-line"> student<span class="token punctuation">.</span>Name<span class="token punctuation">,</span>
</span><span class="code-line"> student<span class="token punctuation">.</span>Age
</span><span class="code-line"> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 使用SELECT创建一个新的指定类并输出为集合</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">var</span></span> result2 <span class="token operator">=</span> students<span class="token punctuation">.</span><span class="token function">Select</span><span class="token punctuation">(</span>student <span class="token operator">=></span> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">StudentDto</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token punctuation">{</span>
</span><span class="code-line"> StudentName <span class="token operator">=</span> student<span class="token punctuation">.</span>Name<span class="token punctuation">,</span>
</span><span class="code-line"> StudentAge <span class="token operator">=</span> student<span class="token punctuation">.</span>Age
</span><span class="code-line"> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="orderby"><a aria-hidden="true" tabindex="-1" href="#orderby"><span class="icon icon-link"></span></a>ORDERBY</h3><div class="wrap-body">
<blockquote>
<p>排序</p>
</blockquote>
<pre class="wrap-text"><code class="language-cs code-highlight"><span class="code-line"><span class="token comment">// 示例数据源</span>
</span><span class="code-line"><span class="token class-name">List<span class="token punctuation">&#x3C;</span>Student<span class="token punctuation">></span></span> students <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">List<span class="token punctuation">&#x3C;</span>Student<span class="token punctuation">></span></span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Student</span> <span class="token punctuation">{</span> Name <span class="token operator">=</span> <span class="token string">"Alice"</span><span class="token punctuation">,</span> Age <span class="token operator">=</span> <span class="token number">25</span><span class="token punctuation">,</span> Grade <span class="token operator">=</span> <span class="token string">"A"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Student</span> <span class="token punctuation">{</span> Name <span class="token operator">=</span> <span class="token string">"Bob"</span><span class="token punctuation">,</span> Age <span class="token operator">=</span> <span class="token number">30</span><span class="token punctuation">,</span> Grade <span class="token operator">=</span> <span class="token string">"B"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Student</span> <span class="token punctuation">{</span> Name <span class="token operator">=</span> <span class="token string">"Barry"</span><span class="token punctuation">,</span> Age <span class="token operator">=</span> <span class="token number">35</span><span class="token punctuation">,</span> Grade <span class="token operator">=</span> <span class="token string">"C"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Student</span> <span class="token punctuation">{</span> Name <span class="token operator">=</span> <span class="token string">"Charlie"</span><span class="token punctuation">,</span> Age <span class="token operator">=</span> <span class="token number">22</span><span class="token punctuation">,</span> Grade <span class="token operator">=</span> <span class="token string">"A"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Student</span> <span class="token punctuation">{</span> Name <span class="token operator">=</span> <span class="token string">"David"</span><span class="token punctuation">,</span> Age <span class="token operator">=</span> <span class="token number">21</span><span class="token punctuation">,</span> Grade <span class="token operator">=</span> <span class="token string">"C"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Student</span> <span class="token punctuation">{</span> Name <span class="token operator">=</span> <span class="token string">"Damon"</span><span class="token punctuation">,</span> Age <span class="token operator">=</span> <span class="token number">28</span><span class="token punctuation">,</span> Grade <span class="token operator">=</span> <span class="token string">"B"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Student</span> <span class="token punctuation">{</span> Name <span class="token operator">=</span> <span class="token string">"Echo"</span><span class="token punctuation">,</span> Age <span class="token operator">=</span> <span class="token number">18</span><span class="token punctuation">,</span> Grade <span class="token operator">=</span> <span class="token string">"C"</span> <span class="token punctuation">}</span>
</span><span class="code-line"><span class="token punctuation">}</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 使用LINQ的OrderBy进行排序</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">var</span></span> result1 <span class="token operator">=</span> students<span class="token punctuation">.</span><span class="token function">OrderBy</span><span class="token punctuation">(</span>student <span class="token operator">=></span> student<span class="token punctuation">.</span>Age<span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 使用LINQ的OrderByDescending进行降序排序</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">var</span></span> result2 <span class="token operator">=</span> students<span class="token punctuation">.</span><span class="token function">OrderByDescending</span><span class="token punctuation">(</span>student <span class="token operator">=></span> student<span class="token punctuation">.</span>Age<span class="token punctuation">)</span><span class="token punctuation">;</span>
</span></code></pre>
<!--rehype:className=wrap-text-->
</div></div></div><div class="wrap h3body-not-exist col-span-3"><div class="wrap-header h3wrap"><h3 id="join"><a aria-hidden="true" tabindex="-1" href="#join"><span class="icon icon-link"></span></a>JOIN</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-3-->
<blockquote>
<p><code>Join</code>:用于执行内连接操作,它会返回两个数据源中满足连接条件的元素的交集</p>
<p><code>GroupJoin</code>用于执行左外连接left outer join操作它会返回左边数据源的所有元素以及每个元素所匹配的右边数据源的元素组成的集合。(嵌套)</p>
</blockquote>
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token comment">// 示例数据源</span>
</span><span class="code-line"><span class="token class-name">List<span class="token punctuation">&#x3C;</span>Department<span class="token punctuation">></span></span> departments <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">List<span class="token punctuation">&#x3C;</span>Department<span class="token punctuation">></span></span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Department</span> <span class="token punctuation">{</span> ID <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">,</span> Name <span class="token operator">=</span> <span class="token string">"HR"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Department</span> <span class="token punctuation">{</span> ID <span class="token operator">=</span> <span class="token number">2</span><span class="token punctuation">,</span> Name <span class="token operator">=</span> <span class="token string">"IT"</span> <span class="token punctuation">}</span>
</span><span class="code-line"><span class="token punctuation">}</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token comment">// 示例数据源</span>
</span><span class="code-line"><span class="token class-name">List<span class="token punctuation">&#x3C;</span>Employee<span class="token punctuation">></span></span> employees <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">List<span class="token punctuation">&#x3C;</span>Employee<span class="token punctuation">></span></span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Employee</span> <span class="token punctuation">{</span> DepartmentID <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">,</span> Name <span class="token operator">=</span> <span class="token string">"Alice"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Employee</span> <span class="token punctuation">{</span> DepartmentID <span class="token operator">=</span> <span class="token number">2</span><span class="token punctuation">,</span> Name <span class="token operator">=</span> <span class="token string">"Bob"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Employee</span> <span class="token punctuation">{</span> DepartmentID <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">,</span> Name <span class="token operator">=</span> <span class="token string">"Charlie"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Employee</span> <span class="token punctuation">{</span> DepartmentID <span class="token operator">=</span> <span class="token number">3</span><span class="token punctuation">,</span> Name <span class="token operator">=</span> <span class="token string">"David"</span> <span class="token punctuation">}</span>
</span><span class="code-line"><span class="token punctuation">}</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 使用Join将部门和员工相结合获取部门名称和员工名称的集合</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">var</span></span> joinQuery <span class="token operator">=</span> departments<span class="token punctuation">.</span><span class="token function">Join</span><span class="token punctuation">(</span>employees<span class="token punctuation">,</span>
</span><span class="code-line"> department <span class="token operator">=></span> department<span class="token punctuation">.</span>ID<span class="token punctuation">,</span> employee <span class="token operator">=></span> employee<span class="token punctuation">.</span>DepartmentID<span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token punctuation">(</span>department<span class="token punctuation">,</span> employee<span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token keyword">new</span> <span class="token punctuation">{</span> Department <span class="token operator">=</span> department<span class="token punctuation">.</span>Name<span class="token punctuation">,</span> Employee <span class="token operator">=</span> employee<span class="token punctuation">.</span>Name <span class="token punctuation">}</span>
</span><span class="code-line"> <span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 使用GroupJoin将部门和员工相结合返回所有的部门并返回每个部门相关联的员工集合(嵌套)</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">var</span></span> groupJoinQuery <span class="token operator">=</span> departments<span class="token punctuation">.</span><span class="token function">GroupJoin</span><span class="token punctuation">(</span>employees<span class="token punctuation">,</span>
</span><span class="code-line"> department <span class="token operator">=></span> department<span class="token punctuation">.</span>ID<span class="token punctuation">,</span> employee <span class="token operator">=></span> employee<span class="token punctuation">.</span>DepartmentID<span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token punctuation">(</span>department<span class="token punctuation">,</span> employeeGroup<span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token keyword">new</span>
</span><span class="code-line"> <span class="token punctuation">{</span>
</span><span class="code-line"> Department <span class="token operator">=</span> department<span class="token punctuation">.</span>Name<span class="token punctuation">,</span>
</span><span class="code-line"> Employees <span class="token operator">=</span> employeeGroup<span class="token punctuation">.</span><span class="token function">Select</span><span class="token punctuation">(</span>e <span class="token operator">=></span> e<span class="token punctuation">.</span>Name<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">ToList</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token punctuation">}</span>
</span><span class="code-line"> <span class="token punctuation">)</span><span class="token punctuation">;</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist col-span-2"><div class="wrap-header h3wrap"><h3 style="background:#e91e63;" id="结果转换"><a aria-hidden="true" tabindex="-1" href="#结果转换"><span class="icon icon-link"></span></a>结果转换</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2&style=background:#e91e63;-->
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token comment">// ToList(): 将结果转换为List集合。</span>
</span><span class="code-line"><span class="token class-name">List<span class="token punctuation">&#x3C;</span>Student<span class="token punctuation">></span></span> resultList <span class="token operator">=</span> result<span class="token punctuation">.</span><span class="token function">ToList</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// ToDictionary(): 将结果转换为Dictionary字典。</span>
</span><span class="code-line"><span class="token class-name">Dictionary<span class="token punctuation">&#x3C;</span><span class="token keyword">string</span><span class="token punctuation">,</span> <span class="token keyword">int</span><span class="token punctuation">></span></span> resultDictionary <span class="token operator">=</span> students
</span><span class="code-line"> <span class="token punctuation">.</span><span class="token function">ToDictionary</span><span class="token punctuation">(</span>student <span class="token operator">=></span> student<span class="token punctuation">.</span>Name<span class="token punctuation">,</span> student <span class="token operator">=></span> student<span class="token punctuation">.</span>Age<span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// ToArray(): 将结果转换为数组。</span>
</span><span class="code-line"><span class="token class-name">Student<span class="token punctuation">[</span><span class="token punctuation">]</span></span> resultArray <span class="token operator">=</span> result<span class="token punctuation">.</span><span class="token function">ToArray</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// First(): 获取结果中的第一个元素。</span>
</span><span class="code-line"><span class="token class-name">Student</span> firstStudent <span class="token operator">=</span> result<span class="token punctuation">.</span><span class="token function">First</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// FirstOrDefault(): 获取结果中的第一个元素,如果结果为空则返回默认值。</span>
</span><span class="code-line"><span class="token class-name">Student</span> firstStudent <span class="token operator">=</span> result<span class="token punctuation">.</span><span class="token function">FirstOrDefault</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="自定义扩展方法"><a aria-hidden="true" tabindex="-1" href="#自定义扩展方法"><span class="icon icon-link"></span></a>自定义扩展方法</h3><div class="wrap-body">
<pre class="wrap-text"><code class="language-cs code-highlight"><span class="code-line"><span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">class</span> <span class="token class-name">CustomExtensions</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token return-type class-name">IEnumerable<span class="token punctuation">&#x3C;</span>T<span class="token punctuation">></span></span> <span class="token generic-method"><span class="token function">CustomFilter</span><span class="token generic class-name"><span class="token punctuation">&#x3C;</span>T<span class="token punctuation">></span></span></span><span class="token punctuation">(</span><span class="token keyword">this</span> <span class="token class-name">IEnumerable<span class="token punctuation">&#x3C;</span>T<span class="token punctuation">></span></span> source<span class="token punctuation">,</span> <span class="token class-name">Func<span class="token punctuation">&#x3C;</span>T<span class="token punctuation">,</span> <span class="token keyword">bool</span><span class="token punctuation">></span></span> predicate<span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">foreach</span> <span class="token punctuation">(</span><span class="token class-name"><span class="token keyword">var</span></span> item <span class="token keyword">in</span> source<span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token function">predicate</span><span class="token punctuation">(</span>item<span class="token punctuation">)</span><span class="token punctuation">)</span>
</span><span class="code-line"> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">yield</span> <span class="token keyword">return</span> item<span class="token punctuation">;</span>
</span><span class="code-line"> <span class="token punctuation">}</span>
</span><span class="code-line"> <span class="token punctuation">}</span>
</span><span class="code-line"> <span class="token punctuation">}</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line"><span class="token comment">// 使用自定义扩展方法</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">var</span></span> filteredData <span class="token operator">=</span> students<span class="token punctuation">.</span><span class="token function">CustomFilter</span><span class="token punctuation">(</span>s <span class="token operator">=></span> s<span class="token punctuation">.</span>Age <span class="token operator">></span> <span class="token number">20</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span></code></pre>
<!--rehype:className=wrap-text-->
</div></div></div><div class="wrap h3body-not-exist col-span-3"><div class="wrap-header h3wrap"><h3 style="background:#e91e63;" id="示例"><a aria-hidden="true" tabindex="-1" href="#示例"><span class="icon icon-link"></span></a>示例</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-3&style=background:#e91e63;-->
<blockquote>
<p>假设有一个包含学生信息的列表每个学生有姓名、年龄和成绩。使用LINQ查询来选择年龄大于20岁的学生然后按照他们的成绩进行分组并选择每个分组中年龄最小的学生的姓名。</p>
</blockquote>
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token comment">// 示例数据源</span>
</span><span class="code-line"><span class="token class-name">List<span class="token punctuation">&#x3C;</span>Student<span class="token punctuation">></span></span> students <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">List<span class="token punctuation">&#x3C;</span>Student<span class="token punctuation">></span></span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Student</span> <span class="token punctuation">{</span> Name <span class="token operator">=</span> <span class="token string">"Alice"</span><span class="token punctuation">,</span> Age <span class="token operator">=</span> <span class="token number">25</span><span class="token punctuation">,</span> Grade <span class="token operator">=</span> <span class="token string">"A"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Student</span> <span class="token punctuation">{</span> Name <span class="token operator">=</span> <span class="token string">"Bob"</span><span class="token punctuation">,</span> Age <span class="token operator">=</span> <span class="token number">30</span><span class="token punctuation">,</span> Grade <span class="token operator">=</span> <span class="token string">"B"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Student</span> <span class="token punctuation">{</span> Name <span class="token operator">=</span> <span class="token string">"Barry"</span><span class="token punctuation">,</span> Age <span class="token operator">=</span> <span class="token number">35</span><span class="token punctuation">,</span> Grade <span class="token operator">=</span> <span class="token string">"C"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Student</span> <span class="token punctuation">{</span> Name <span class="token operator">=</span> <span class="token string">"Charlie"</span><span class="token punctuation">,</span> Age <span class="token operator">=</span> <span class="token number">22</span><span class="token punctuation">,</span> Grade <span class="token operator">=</span> <span class="token string">"A"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Student</span> <span class="token punctuation">{</span> Name <span class="token operator">=</span> <span class="token string">"David"</span><span class="token punctuation">,</span> Age <span class="token operator">=</span> <span class="token number">21</span><span class="token punctuation">,</span> Grade <span class="token operator">=</span> <span class="token string">"C"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Student</span> <span class="token punctuation">{</span> Name <span class="token operator">=</span> <span class="token string">"Damon"</span><span class="token punctuation">,</span> Age <span class="token operator">=</span> <span class="token number">28</span><span class="token punctuation">,</span> Grade <span class="token operator">=</span> <span class="token string">"B"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Student</span> <span class="token punctuation">{</span> Name <span class="token operator">=</span> <span class="token string">"Echo"</span><span class="token punctuation">,</span> Age <span class="token operator">=</span> <span class="token number">18</span><span class="token punctuation">,</span> Grade <span class="token operator">=</span> <span class="token string">"C"</span> <span class="token punctuation">}</span>
</span><span class="code-line"><span class="token punctuation">}</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 使用LINQ进行查询</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">var</span></span> result <span class="token operator">=</span> students
</span><span class="code-line"> <span class="token punctuation">.</span><span class="token function">Where</span><span class="token punctuation">(</span>student <span class="token operator">=></span> student<span class="token punctuation">.</span>Age <span class="token operator">></span> <span class="token number">20</span><span class="token punctuation">)</span> <span class="token comment">// WHERE: 选择年龄大于20的学生</span>
</span><span class="code-line"> <span class="token punctuation">.</span><span class="token function">GroupBy</span><span class="token punctuation">(</span>student <span class="token operator">=></span> student<span class="token punctuation">.</span>Grade<span class="token punctuation">)</span> <span class="token comment">// GROUP BY: 按成绩分组</span>
</span><span class="code-line"> <span class="token punctuation">.</span><span class="token function">Select</span><span class="token punctuation">(</span><span class="token keyword">group</span> <span class="token operator">=></span> <span class="token keyword">group</span><span class="token punctuation">.</span><span class="token function">OrderBy</span><span class="token punctuation">(</span>student <span class="token operator">=></span> student<span class="token punctuation">.</span>Age<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">First</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>Name<span class="token punctuation">)</span> <span class="token comment">// SELECT: 选择每个分组中年龄最小的学生的姓名</span>
</span><span class="code-line"> <span class="token punctuation">.</span><span class="token function">ToList</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//转换为List&#x3C;Student>()</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">//输出结果</span>
</span><span class="code-line"><span class="token punctuation">[</span><span class="token string">"Charlie"</span><span class="token punctuation">,</span><span class="token string">"Damon"</span><span class="token punctuation">,</span><span class="token string">"David"</span><span class="token punctuation">]</span>
</span></code></pre>
</div></div></div></div></div><div class="wrap h2body-exist"><div class="wrap-header h2wrap"><h2 id="语法糖"><a aria-hidden="true" tabindex="-1" href="#语法糖"><span class="icon icon-link"></span></a>语法糖</h2><div class="wrap-body">
<blockquote>
<p>语法糖需要根据 <code>c#</code> 版本来确实是否可以使用,一般情况下 <code>c# 8.0</code> 及以上的 <code>C#</code> 版本都已支持。</p>
</blockquote>
</div></div><div class="h2wrap-body"><div class="wrap h3body-not-exist col-span-2"><div class="wrap-header h3wrap"><h3 id="对象判空及赋值"><a aria-hidden="true" tabindex="-1" href="#对象判空及赋值"><span class="icon icon-link"></span></a>对象判空及赋值</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2-->
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token comment">// 判断对象是否为空,为空抛出异常</span>
</span><span class="code-line"><span class="token keyword">if</span><span class="token punctuation">(</span>obj <span class="token operator">==</span> <span class="token keyword">null</span><span class="token punctuation">)</span> <span class="token keyword">throw</span> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">NullReferenceException</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 简化的语法糖</span>
</span><span class="code-line">obj <span class="token operator">??</span> <span class="token keyword">throw</span> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">NullReferenceException</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 判断 对象为空 的情况下再赋新值</span>
</span><span class="code-line"><span class="token comment">// 对象不为空 不进行赋值</span>
</span><span class="code-line"><span class="token keyword">if</span><span class="token punctuation">(</span>obj <span class="token operator">==</span> <span class="token keyword">null</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> obj <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token constructor-invocation class-name"><span class="token keyword">object</span></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 简化的语法糖</span>
</span><span class="code-line">obj <span class="token operator">??=</span> <span class="token keyword">new</span> <span class="token constructor-invocation class-name"><span class="token keyword">object</span></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="可空类型判空及赋值"><a aria-hidden="true" tabindex="-1" href="#可空类型判空及赋值"><span class="icon icon-link"></span></a>可空类型判空及赋值</h3><div class="wrap-body">
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token comment">// 可空类型</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">int</span><span class="token punctuation">?</span></span> nums <span class="token operator">=</span> <span class="token keyword">null</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 判断值是否为空,并进行不同的赋值</span>
</span><span class="code-line"><span class="token keyword">if</span><span class="token punctuation">(</span>nums <span class="token operator">==</span> <span class="token keyword">null</span><span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> result <span class="token operator">=</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">;</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line"><span class="token keyword">else</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> result <span class="token operator">=</span> nums<span class="token punctuation">;</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 简化的语法糖</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">int</span></span> result <span class="token operator">=</span> nums <span class="token operator">??</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">;</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="减少空引用"><a aria-hidden="true" tabindex="-1" href="#减少空引用"><span class="icon icon-link"></span></a>减少空引用</h3><div class="wrap-body">
<p>判断数组或 <code>list</code> 不能 <code>null</code> 且有元素</p>
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token keyword">if</span><span class="token punctuation">(</span>list <span class="token operator">!=</span> <span class="token keyword">null</span> <span class="token operator">&#x26;&#x26;</span> list<span class="token punctuation">.</span>Count <span class="token operator">></span> <span class="token number">0</span><span class="token punctuation">)</span>
</span></code></pre>
<p>简化的语法糖当 <code>list</code><code>null</code> 时,将直接返回 <code>false</code></p>
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token keyword">if</span><span class="token punctuation">(</span>list<span class="token punctuation">?.</span>Count <span class="token operator">></span> <span class="token number">0</span><span class="token punctuation">)</span>
</span></code></pre>
<p>同样可运用在赋值时,如果 <code>obj</code><code>null</code>,将不会取 <code>obj.text</code> 的值,而是将会为 <code>text</code> 赋值 <code>null</code></p>
<pre class="wrap-text"><code class="language-cs code-highlight"><span class="code-line"><span class="token class-name"><span class="token keyword">string</span></span> text <span class="token operator">=</span> obj<span class="token punctuation">?.</span>text<span class="token punctuation">;</span>
</span></code></pre>
<!--rehype:className=wrap-text-->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="判断参数类型并转换类型校验"><a aria-hidden="true" tabindex="-1" href="#判断参数类型并转换类型校验"><span class="icon icon-link"></span></a>判断参数类型并转换类型+校验</h3><div class="wrap-body">
<ul class="style-timeline">
<li>判断 <code>value</code> 是否为 <code>string</code> 类型,如果 <code>value</code><code>string</code> 类型</li>
<li>那么将 <code>value</code> 转换为 <code>string</code> 类型,并赋值给 <code>stringValue</code></li>
<li>再判断 <code>stringValue</code> 是否不为 <code>Null</code><code></code></li>
</ul>
<!--rehype:className=style-timeline-->
<pre class="wrap-text"><code class="language-cs code-highlight"><span class="code-line"><span class="token keyword">if</span><span class="token punctuation">(</span><span class="token keyword">value</span> <span class="token keyword">is</span> <span class="token class-name"><span class="token keyword">string</span></span> stringValue <span class="token operator">&#x26;&#x26;</span> <span class="token operator">!</span><span class="token keyword">string</span><span class="token punctuation">.</span><span class="token function">IsNullOrEmpty</span><span class="token punctuation">(</span>stringValue<span class="token punctuation">)</span><span class="token punctuation">)</span>
</span></code></pre>
<!--rehype:className=wrap-text-->
</div></div></div><div class="wrap h3body-not-exist"><div class="wrap-header h3wrap"><h3 id="switch"><a aria-hidden="true" tabindex="-1" href="#switch"><span class="icon icon-link"></span></a>Switch</h3><div class="wrap-body">
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token keyword">public</span> <span class="token return-type class-name"><span class="token keyword">string</span></span> <span class="token function">GetNums</span><span class="token punctuation">(</span><span class="token class-name"><span class="token keyword">int</span></span> num<span class="token punctuation">)</span>
</span><span class="code-line"><span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token comment">// 使用这种方式的switch时要求返回类型统一</span>
</span><span class="code-line"> <span class="token class-name"><span class="token keyword">string</span></span> str <span class="token operator">=</span> num <span class="token keyword">switch</span>
</span><span class="code-line"> <span class="token punctuation">{</span>
</span><span class="code-line"> <span class="token number">1</span> <span class="token operator">=></span> <span class="token string">"num的值是1"</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token number">2</span> <span class="token operator">=></span> <span class="token string">"num的值是2"</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token number">3</span> <span class="token operator">=></span> <span class="token string">"num的值是3"</span><span class="token punctuation">,</span>
</span><span class="code-line"> <span class="token number">4</span> <span class="token operator">=></span> <span class="token string">"num的值是4"</span><span class="token punctuation">,</span>
</span><span class="code-line"> _ <span class="token operator">=></span> <span class="token string">"其他"</span>
</span><span class="code-line"> <span class="token punctuation">}</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"> <span class="token keyword">return</span> str<span class="token punctuation">;</span>
</span><span class="code-line"><span class="token punctuation">}</span>
</span></code></pre>
</div></div></div><div class="wrap h3body-not-exist col-span-2"><div class="wrap-header h3wrap"><h3 id="切片操作"><a aria-hidden="true" tabindex="-1" href="#切片操作"><span class="icon icon-link"></span></a>切片操作</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-2-->
<pre class="language-cs"><code class="language-cs code-highlight"><span class="code-line"><span class="token comment">// **以下所有[]中的数字都代表索引**</span>
</span><span class="code-line"><span class="token comment">// **如果是范围索引,且声明结束索引,那么都将不包含结束索引的值**</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 数组例子</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">string</span><span class="token punctuation">[</span><span class="token punctuation">]</span></span> arr <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token constructor-invocation class-name"><span class="token keyword">string</span><span class="token punctuation">[</span><span class="token punctuation">]</span></span> <span class="token punctuation">{</span> <span class="token string">"10"</span><span class="token punctuation">,</span> <span class="token string">"20"</span><span class="token punctuation">,</span> <span class="token string">"30"</span><span class="token punctuation">,</span> <span class="token string">"40"</span><span class="token punctuation">,</span> <span class="token string">"50"</span><span class="token punctuation">,</span> <span class="token string">"60"</span><span class="token punctuation">,</span> <span class="token string">"70"</span><span class="token punctuation">,</span> <span class="token string">"80"</span><span class="token punctuation">,</span> <span class="token string">"90"</span><span class="token punctuation">,</span> <span class="token string">"100"</span> <span class="token punctuation">}</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 获取最后一个元素</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">string</span></span> str <span class="token operator">=</span> arr<span class="token punctuation">[</span><span class="token operator">^</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 获取前3个元素从索引0开始 到 索引3(不包含)["10","20","30"]</span>
</span><span class="code-line"><span class="token comment">// 可省略索引0从开始 到 索引3(不包含)</span>
</span><span class="code-line"><span class="token comment">// string[] strs = arr[..3];</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">string</span><span class="token punctuation">[</span><span class="token punctuation">]</span></span> strs1 <span class="token operator">=</span> arr<span class="token punctuation">[</span><span class="token number">0</span><span class="token range operator">..</span><span class="token number">3</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 获取后3个元素从倒数第3个元素开始 到 最后:["80", "90", "100"]</span>
</span><span class="code-line"><span class="token comment">// 最后一位索引被省略 string[] strs21 = arr[^3..^0];</span>
</span><span class="code-line"><span class="token comment">// ^0 倒数第0个元素是不存在的</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">string</span><span class="token punctuation">[</span><span class="token punctuation">]</span></span> strs2 <span class="token operator">=</span> arr<span class="token punctuation">[</span><span class="token operator">^</span><span class="token number">3</span><span class="token range operator">..</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 指定获取 正向 某一段元素</span>
</span><span class="code-line"><span class="token comment">// 从索引3开始 到 索引7(不包含)["40", "50", "60", "70"]</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">string</span><span class="token punctuation">[</span><span class="token punctuation">]</span></span> strs3 <span class="token operator">=</span> arr<span class="token punctuation">[</span><span class="token number">3</span><span class="token range operator">..</span><span class="token number">7</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
</span><span class="code-line">
</span><span class="code-line"><span class="token comment">// 指定获取 反向 某一段元素</span>
</span><span class="code-line"><span class="token comment">// 倒数第4个元素开始 到 倒数第2个元素(不包含)["70","80"]</span>
</span><span class="code-line"><span class="token class-name"><span class="token keyword">string</span><span class="token punctuation">[</span><span class="token punctuation">]</span></span> strs4 <span class="token operator">=</span> arr<span class="token punctuation">[</span><span class="token operator">^</span><span class="token number">4</span><span class="token range operator">..</span><span class="token operator">^</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
</span></code></pre>
</div></div></div></div></div><div class="wrap h2body-exist"><div class="wrap-header h2wrap"><h2 id="杂项"><a aria-hidden="true" tabindex="-1" href="#杂项"><span class="icon icon-link"></span></a>杂项</h2><div class="wrap-body">
</div></div><div class="h2wrap-body"><div class="wrap h3body-not-exist col-span-3"><div class="wrap-header h3wrap"><h3 id="常用-net-概念"><a aria-hidden="true" tabindex="-1" href="#常用-net-概念"><span class="icon icon-link"></span></a>常用 .NET 概念</h3><div class="wrap-body">
<!--rehype:wrap-class=col-span-3-->
<table class="show-header left-align"><thead><tr><th align="left">概念</th><th>中文名</th><th>定义</th></tr></thead><tbody><tr><td align="left"><code>Runtime</code></td><td>运行时</td><td>执行给定的已编译代码单元所需的服务集合</td></tr><tr><td align="left"><code>Common Language Runtime (CLR)</code></td><td>通用语言运行库</td><td>主要定位、加载和托管 .NET 对象。<br>CLR 还处理内存管理、应用程序托管、线程协调、执行安全检查和其他低级细节</td></tr><tr><td align="left"><code>Managed code</code></td><td>托管代码</td><td><code>.NET</code> 运行时编译和运行的代码。 C#/F#/VB 就是例子</td></tr><tr><td align="left"><code>Unmanaged code</code></td><td>非托管代码</td><td>直接编译为机器代码且不能由 .NET 运行时直接托管的代码。<br>不包含空闲内存管理、垃圾收集等。从 C/C++ 创建的 DLL 就是示例</td></tr></tbody></table>
<!--rehype:className=show-header left-align-->
</div></div></div></div></div></div><script src="https://giscus.app/client.js" data-repo="jaywcjlove/reference" data-repo-id="R_kgDOID2-Mw" data-category="Q&#x26;A" data-category-id="DIC_kwDOID2-M84CS5wo" data-mapping="pathname" data-strict="0" data-reactions-enabled="1" data-emit-metadata="0" data-input-position="bottom" data-theme="dark" data-lang="zh-CN" crossorigin="anonymous" async></script><div class="giscus"></div></div><footer class="footer-wrap"><footer class="max-container">© 2022 <a href="https://wangchujiang.com/#/app" target="_blank">Kenny Wang</a>.</footer></footer><script src="../data.js?v=1.5.3" defer></script><script src="../js/fuse.min.js?v=1.5.3" defer></script><script src="../js/main.js?v=1.5.3" defer></script><div id="mysearch"><div class="mysearch-box"><div class="mysearch-input"><div><svg xmlns="http://www.w3.org/2000/svg" height="1em" width="1em" viewBox="0 0 18 18">
<path fill="currentColor" d="M17.71,16.29 L14.31,12.9 C15.4069846,11.5024547 16.0022094,9.77665502 16,8 C16,3.581722 12.418278,0 8,0 C3.581722,0 0,3.581722 0,8 C0,12.418278 3.581722,16 8,16 C9.77665502,16.0022094 11.5024547,15.4069846 12.9,14.31 L16.29,17.71 C16.4777666,17.8993127 16.7333625,18.0057983 17,18.0057983 C17.2666375,18.0057983 17.5222334,17.8993127 17.71,17.71 C17.8993127,17.5222334 18.0057983,17.2666375 18.0057983,17 C18.0057983,16.7333625 17.8993127,16.4777666 17.71,16.29 Z M2,8 C2,4.6862915 4.6862915,2 8,2 C11.3137085,2 14,4.6862915 14,8 C14,11.3137085 11.3137085,14 8,14 C4.6862915,14 2,11.3137085 2,8 Z"></path>
</svg><input id="mysearch-input" type="search" placeholder="搜索" autocomplete="off"><div class="mysearch-clear"></div></div><button id="mysearch-close" type="button">搜索</button></div><div class="mysearch-result"><div id="mysearch-menu"></div><div id="mysearch-content"></div></div></div></div></body>
</html>