<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # nameof(C# 和 Visual Basic 引用) 用于獲取變量、類型或成員的簡單(非限定)字符串名稱。當報告代碼中的錯誤、掛接“模型-視圖-控制器”(MVC) 鏈接、觸發屬性更改事件等時,通常希望捕獲方法的字符串名稱。使用 **nameof** 有助于在重命名定義時使代碼始終有效。在必須使用字符串來引用定義之前(在重命名代碼元素時,此操作很脆弱,因為工具不知道要檢查這些字符串)。 **nameof** 表達式具有此形式: ``` if (x == null) throw new ArgumentNullException(nameof(x)); WriteLine(nameof(person.Address.ZipCode)); // prints "ZipCode” ``` ## 關鍵用例 這些示例顯示 **nameof** 的關鍵用例。 驗證參數: ``` void f(string s) { if (s == null) throw new ArgumentNullException(nameof(s)); } ``` MVC 操作鏈接: &lt;a&gt;HTML&lt;/a&gt; ``` &lt;%= Html.ActionLink("Sign up", @typeof(UserController), @nameof(UserController.SignUp)) %&gt; ``` INotifyPropertyChanged: ``` int p { get { return this.p; } set { this.p = value; PropertyChanged(this, new PropertyChangedEventArgs(nameof(this.p)); } // nameof(p) works too } ``` XAML 依賴項屬性: ``` public static DependencyProperty AgeProperty = DependencyProperty.Register(nameof(Age), typeof(int), typeof(C)); ``` 日志記錄: ``` void f(int i) { Log(nameof(f), "method entry"); } ``` 特性: ``` [DebuggerDisplay("={" + nameof(GetString) + "()}")] class C { string GetString() { } } ``` ## 示例 一些 C# 示例: ``` using Stuff = Some.Cool.Functionality class C { static int Method1 (string x, int y) {} static int Method1 (string x, string y) {} int Method2 (int z) {} string f<T>() => nameof(T); } var c = new C() nameof(C) -> "C" nameof(C.Method1) -> "Method1" nameof(C.Method2) -> "Method2" nameof(c.Method1) -> "Method1" nameof(c.Method2) -> "Method2" nameof(z) -> "z" // inside of Method2 ok, inside Method1 is a compiler error nameof(Stuff) = "Stuff" nameof(T) -> "T" // works inside of method but not in attributes on the method nameof(f) -> “f” nameof(f<T>) -> syntax error nameof(f<>) -> syntax error nameof(Method2()) -> error “This expression does not have a name” ``` 上面的很多示例都適用于 Visual Basic。下面是一些特定的 Visual Basic 示例: <a>VB</a> ``` NameOf(a!Foo) -> ' error "This expression does not have a name" NameOf(dict("Foo")) -> ' error "This expression does not have a name": default property access NameOf(dict.Item("Foo")) -> ' error "This expression does not have a name" NameOf(arr(2)) -> ' error "This expression does not have a name": array element index Dim x = Nothing NameOf(x.ToString(2)) -> ' error "This expression does not have a name" Dim o = Nothing NameOf(o.Equals) -> ' result "Equals". Warning: "Access of static member of instance; instance will not be evaluated" ``` ## 備注 **nameof** 的參數必須是簡單名稱、限定名稱、成員訪問、指定成員的基訪問或指定成員的此類訪問。參數表達式標識代碼定義,但從不進行計算。 因為在語法上參數必須為表達式,因此有很多禁用內容無需列出。以下內容會產生錯誤,值得一提:預定義的類型(如 **int** 或 **void**)、可以為 null 的類型(Point?)、數組類型(Customer[,])、指針類型 (Buffer*)、限定別名 (A::B)、未綁定的泛型類型 (Dictionary&lt;,&gt;)、預處理符號 (DEBUG) 和標簽 (loop:)。 如果需要獲取完全限定名,可以將 **typeof** 表達式和 **nameof**結合使用。 在這些示例中,顯示了可使用類型名稱并訪問實例方法名稱。按照計算表達式的要求,無需具有類型的實例。在某些情況下使用類型名稱非常方便,因為只引用名稱而不使用實例數據,因此不必構建實例變量或表達式。 你可以引用類中特性表達式的類成員。 沒有任何方法可以獲取租入“Method1 (str, str)”等簽名信息。實現該操作的一種方法是使用表達式 Expression e = () =&gt; A.B.Method1("s1", "s2"),并從生成的表達式樹中拉取 MemberInfo。 ## 語言規范 有關詳細信息,請參閱 [C# 語言規范](https://msdn.microsoft.com/zh-cn/library/ms228593.aspx)。該語言規范是 C# 語法和用法的權威資料。 有關詳細信息,請參閱 [Visual Basic 語言參考](https://msdn.microsoft.com/zh-cn/library/sh9ywfdk.aspx)。 ## 請參閱 [C# 參考](https://msdn.microsoft.com/zh-cn/library/618ayhy6.aspx) [C# 編程指南](https://msdn.microsoft.com/zh-cn/library/67ef8sbd.aspx) [typeof(C# 參考)](https://msdn.microsoft.com/zh-cn/library/58918ffs.aspx) [Visual Basic 語言參考](https://msdn.microsoft.com/zh-cn/library/sh9ywfdk.aspx) [Visual Basic 編程指南](https://msdn.microsoft.com/zh-cn/library/y4wf33f0.aspx)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看