Tag: 语法

编程术语 – 字段,成员,属性(C#)

我试图找到这个术语的含义,但特别是由于语言障碍,我无法理解它们的用途。 我假设“field”在类中是变量(对象也是?),而“property”只是一个返回特定值并且不能包含方法等的对象。通过“member”我理解在类级别声明的任何对象。 但这些只是我基于注释代码示例的假设,其中一些细心的程序员使用“属性区域”等。如果有人能够向我解释,我真的很感激。

为什么我不能在一个接口中放置一个委托?

为什么我不能在我的界面中添加委托?

C#检查表达式是否为括号有效

表达方式: “(a [i] + { – 1} *(8-9))” 应该返回true,因为写这样的语法是有效的。 每个左支架在正确的位置都有一个靠近的位置,所有支架都处于合法位置。 我尝试通过一个堆栈来做这个,我知道我错在哪里,但我想知道解决这个问题的相关方法。 谢谢! 我可怜的错误代码: string expression = “( a[i]+{-1}*(8-9) ) “; Stack expStack = new Stack(); List rightBracketsHolder = new List(); for (int i = 0; i < expression.Length; i++) { if (expression[i] == '{') { expStack.Push('}'); Console.Write("}" + " "); } else if (expression[i] == […]

哪个代码更好:使用“as”或“is”?

可能重复: 使用CLR中的’as’关键字进行转换 C#:“是”vs“as” 这段代码: if (sheet.Models.Data is GroupDataModel) { GroupDataModel gdm = (GroupDataModel)sheet.Models.Data; 而这段代码: GroupDataModel gdm = sheet.Models.Data as GroupDataModel; if (gdm != null) { 你推荐上面两种风格中的任何一种而不是另一种吗?

正确的SqlParameter语法

我正在尝试转换: command.Parameters.Add (new SqliteParameter (DbType.Int32) { Value = id }); 到正常的SqlParameter: command.Parameters.Add(new SqlParameter(DbType.Int32) { Value = id }); 我已经成功转换了除此之外的每一行,我收到这些错误: Error 3 Argument 1: cannot convert from ‘System.Data.DbType’ to ‘object[]’ Error 2 The best overloaded method match for ‘System.Data.SqlClient.SqlParameter.SqlParameter(object[])’ has some invalid arguments 全function代码: public User GetUser(int id) { var u = new User(); lock (locker) […]

路由事件和依赖项属性.NET包装器混淆

我是WPF的新手,并且对于路由事件和依赖属性的语法包含了一些困惑,我在许多来源上看到路由事件和依赖属性被包装成这样 // Routed Event public event RoutedEventHandler Click { add { base.AddHandler(ButtonBase.ClickEvent, value); } remove { base.RemoveHandler(ButtonBase.ClickEvent, value); } } // Dependency Property public Thickness Margin { set { SetValue(MarginProperty, value); } get { return (Thickness)GetValue(MarginProperty); } } 我从未在C#中看到添加/删除/设置/获取关键字的类型。 这些是C#语言的一部分作为关键字,我从来没有经历过或使用它们,因为我没有在C#中工作,因为我是一名C ++程序员? 如果不是关键字,那么如果它们不是C#的一部分以及它们如何工作,它们如何被编译器处理

在对象初始化期间添加事件处理

我需要将某种类型的实例(将在此刻创建)传递给方法。 这种类型提供了我想订阅的几个事件,所以我的代码如下所示: var instance = new Instance(); instance.OnEvent1 += (sender, args) => { DoThis(); DoThat(); } instance.OnEvent2 += (sender, args) => DoThisToo(); instance.OnEvent3… MyMethod(instance); 现在,是否可以在初始化期间添加处理程序? 所以我可以这样写: MyMethod((MyType)instance => { instance.OnEvent1 += (sender, args) => { DoThis(); DoThat(); } instance.OnEvent2… }); 当然,由于美容原因,这仅是期望的。 我喜欢我的代码小而且可读。

为什么在集合初始值设定项结束时可以使用逗号?

这一直困扰着我,但我猜这里有一个非常明智的解释。 当你有一个集合初始化程序时,编译器允许使用尾随逗号,例如 new Dictionary { { “Foo”, “Bar “}, }; 和 new List { “Foo”, }; 任何人都知道为什么编译器允许这个尾随逗号?

什么时候在C#中使用没有语句的范围?

就在最近,我发现你可以在C#中做到这一点: { // google string url = “#”; if ( value > 5 ) url = “http://google.com”; menu.Add( new MenuItem(url) ); } { // cheese string url = “#”; // url has to be redefined again, // so it can’t accidently leak into the new menu item if ( value > 45 ) url = […]

名称’str’在当前上下文中不存在

我在这里声明了一个类变量 void downloader_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e) { if (e.Error == null) { Stream responseStream = e.Result; StreamReader responseReader = new StreamReader(responseStream); string response = responseReader.ReadToEnd(); string[] split1 = Regex.Split(response, “},{“); List pri1 = new List(split1); pri1.RemoveAt(0); string last = pri1[pri1.Count() – 1]; pri1.Remove(last); } } 我想在这个方法中使用classv ariable str void AddPrimaryMarkerGraphics(object sender, getPrimaryListCompletedEventArgs e) { List […]