Tag: 语法

如何同时为C#类分配多个名称

有没有一种方法可以为C#类赋予多个名称,例如: Foo {} class AlternativeFooName是指Foo 我希望能够通过两个名称,Foo和AlternativeFooName访问Foo,但不必从Fooinheritance。 对此应用程序将为类提供一个长描述性名称,但在使用时可以缩写它,例如: 而不是Foo f = new Foo(); 能够使用具有相同效果的以下内容:F f = new F();

如果是C#中的/ else语句

为什么这样做? private void button1_Click(object sender, EventArgs e) { if (!checkBox1.Checked) { MessageBox.Show(“The box is not checked!”); } if (checkBox1.Checked == true) { if (label1.BackColor == Color.Red) { label1.BackColor = Color.Blue; } else { label1.BackColor = Color.Red; } } } 但这不是吗? private void button1_Click(object sender, EventArgs e) { if (!checkBox1.Checked) { MessageBox.Show(“The box is not checked!”); […]

‘+ =’的含义

我对C#的语法感到困惑:“+ =”的用法是什么?

C#中“带分号的空行”是什么意思?

我偶然发现了这段代码,并想知道为什么C#编译器不会引发任何警告或错误。 严格地说,我想我正在尝试执行任何事实上无效的事情? (对于空行)

没有显式键的匿名类型的语法(`new {identifier}`)?

在这个问题中,我看到了一个匿名类型表达式,其中包含一个不熟悉的语法: new { MyObjectID = g.Key, totalSum } 起初我认为它( , totalSum } )是一个语法错误,因为没有指定键,但它编译并在C#3.0中工作。 我在LINQPad(2.x – > C#3)中validation了这种语法: var y = “:-)”; var q = new { Y = y, y, y.Length, }; q.Dump(); 结果: (anon type) { Y = “:-)”, y = “:-)”, Length = 3 } 规范中的哪个位置定义了这种语法? (答案应包括适用的参考资料和适当的摘录。) 并且,更主观(随意不回答),省略键是否是一个好的语法/捷径? 到目前为止,我还没有使用它,我不知道它,我不是很迷恋那个语法糖。

从词典中组合“检查添加或提取”

我厌倦了这个字典成语: Dictionary Contacts; //… if (!Contacts.ContainsKey(id)) { contact = new Contact(); Contacts[id] = contact; } else { contact = Contacts[id]; } 如果有一种语法允许从默认构造函数隐式创建新值,如果它不存在(字典知道值的类型,毕竟),那将是很好的。 有人看过帮助者(例如扩展方法)吗?

C# – 如何引用一个引用任何实现一组接口的对象的类型?

我怎样才能有一个类型引用引用任何实现一组接口的对象? 例如,我可以使用这样的generics类型: Java的: public class Foo { } C# public class Foo where T : A, B { } 这就是如何拥有类范围的generics类型。 但是,我想简单地拥有一个数据成员,它引用任何扩展给定接口集的对象。 例: public class Foo { protected object; public void setObject( object) { this.object = object; } } 如果有可能有这种类型的语法,我怎么能在Java和C#中做到这一点? 我意识到我可以创建另一个扩展所有所需接口的接口。 但是,我不认为这是最优的,因为它不必要地添加另一种类型,其唯一目的是绕过语法。 虽然这是一个非常小的问题,但就优雅而言,它有点令人痛苦。

枚举声明中不必要的逗号

可能重复: .NET Enumeration允许在最后一个字段中使用逗号 public enum SubPackageBackupModes { Required, NotRequired //no comma } public enum SubPackageBackupModes { Required, NotRequired, //extra unnecessary comma } 既然都编译,这些声明之间有什么区别吗?

在引用父对象字段,属性或方法时,’base’和’this’之间有什么区别吗?

请考虑以下代码: public class Vehicle { public void StartEngine() { // Code here. } } public class CityBus : Vehicle { public void MoveToLocation(Location location) { ////base.StartEngine(); this.StartEngine(); // Do other stuff to drive the bus to the new location. } } 这个this.StartEngine(); 和base.StartEngine(); ,除了在第二种情况下, StartEngine方法无法在CityBus类中移动或覆盖? 是否会对性能产生影响?

“词汇的正则表达式”(语义替换) – 任何示例语法和库?

我正在寻找合成示例或常用技术,在给定过程语言的情况下对单词而不是字符进行正则表达式样式转换。 例如,要跟踪复制,可能需要创建具有相似含义但具有不同单词选择的文档。 我希望能够简明地定义我可以应用于文本流的这些可能的转换。 例如。 “快速名词 ”改为“快速名词 ”,但“ 走得快 ”。 不会被改变(之后没有名词。 或者:“爱丽丝会唱歌”到“ 歌曲将由爱丽丝演唱” 我希望这可以在语法检查器中完成,例如检测被动语态。 这种语言处理的AC#实现非常简洁,但我认为任何努力的大部分都是正确的规则 – 保持规则清晰易懂似乎是一个开始的地方。