zoukankan      html  css  js  c++  java
  • C# 2.0 的"语法多义性"

    在C# 2.0的语言规范中, 有一段对"语法多义性"的说明。看后写了个例子编译了一下,代码如下:

        
    public partial class Form1 : Form
        {
            
    public class A
            {
            }

            
    public class B
            {
            }

            
    public void F(bool b1, bool b2)
            {
            }

            
    public void F(bool b1)
            {
            }

            
    public bool G<TA, TB>(int i)
            {
                
    return true;
            }

            
    public Form1()
            {
                InitializeComponent();
            }

            
    private void Test1()
            {
                F(G
    <A, B>(7));
            }

            
    private void Test2()
            {
                
    int G = 3;
                
    int A = 4;
                
    int B = 5;

                F(G
    <A, B>(7));
            }

            
    private void Test3()
            {
                
    int G = 3;
                
    int A = 4;
                
    int B = 5;

                F(G
    <A, B>7);
            }

            
    private void Test4()
            {
                
    int H = 3;
                
    int A = 4;
                
    int B = 5;

                F(H
    <A, B>(7));
            }

            
    private void Test5()
            {
                
    int H = 3;
                
    int A = 4;
                
    int B = 5;

                F((H
    <A), B>(7));
            }

            
    private void Test6()
            {
                
    int H = 3;
                
    int A = 4;
                
    int B = 5;

                F(H
    <(A), B>(7));
            }
        }
    Test4()编译不过去,提示“变量“H”不是泛型方法。如果原打算使用表达式列表,请在 < 表达式两边使用括号。”。
    即要求改正如Test5()的代码。Test6()也是可以正确编译的。
    而Test4()在VS.NET2003,即.net 1.1下是可以编译通过的。
    同时受泛型影响的“规范”还有,"右移语法变化", 在C#语言规范中也作了部分说明。

  • 相关阅读:
    模块移植-加宏选择性编译
    模块-各个模块的路径所在
    ubuntu-系统卡慢解决(转载)
    meld文件的脚本
    artTemplate模板引擎
    前端完全分离和前端不完全分离
    px em rem的区别
    原型和原型链
    阻止默认事件
    document.ready和onload的区别
  • 原文地址:https://www.cnblogs.com/zhongzf/p/859731.html
Copyright © 2011-2022 走看看