是否可以使用C#Automatic Properties创建对象的新实例?
在C#我喜欢我能做到这一点:
public string ShortProp {get; set;}
Run Code Online (Sandbox Code Playgroud)
是否可以为首先需要实例化的List之类的对象执行此操作?
即:
List<string> LongProp = new List<string>();
public List<string> LongProp {
get {
return LongProp ;
}
set {
LongProp = value;
}
}
Run Code Online (Sandbox Code Playgroud) 我花了一些调试来解决这个问题(或者我认为是这样).我会让你的代码松散,看看你提出了什么.有一个简单的Contact类:
Contact.ID属性并根据它获得的参数设置其他属性 首先看代码; 它的输出和问题遵循以下代码:
using System;
class Program
{
private static void Main(string[] args)
{
Contact[] contacts_array = {
//Contact 0
new Contact(),
//Contact 1
new Contact {
Name = "contactName1",
Age = 40,
Email = "emailaddress1@email.com"
},
//Contact 2
new Contact {
Name = "contactName2",
Age = 41,
Email = "emailaddress2@email.com"
},
//Contact 3
new Contact("contactName3",
42,
"emailaddress3@email.com"),
};
foreach (var contact in contacts_array)
Console.WriteLine(contact);
Console.ReadLine();
}
}
public class Contact
{
public …Run Code Online (Sandbox Code Playgroud) 我有以下一点代码:
public struct Interval
{
public double Min { get; set; }
public double Max { get; set; }
public Interval(double min = double.MinValue, double max = double.MaxValue)
{
Min = min;
Max = max;
}
}
Run Code Online (Sandbox Code Playgroud)
编译器抱怨说
在将控制权返回给调用者之前,必须完全分配自动实现的属性的备份字段.考虑从构造函数初始化程序中调用默认构造函数.
这是我不理解的,因为我的构造函数正在完全初始化此结构的值.不是吗?
我实际上更喜欢用Java语言来开发应用程序.但是由于我的要求现在变得越来越紧,我需要跳进VB.NET好吧...似乎需要适应一些.
无论如何,我打造了很多用于在visual studio中制作这个setter和getter属性的东西;
Public Property supplierId() As Integer
Get
supplierId = iSupplierId
End Get
Set(ByVal value As Integer)
iSupplierId = value
End Set
End Property
Run Code Online (Sandbox Code Playgroud)
我们是否有任何自动方式来设置和获取变量的属性?因为我发现当我使用java语言并使用Netbeans时,setter和getter函数(或者有时我们称之为方法)是相当多的点击和点击.一切都完成了!但是在这里......当我在VB.Net中尝试时,哇...打字,......呵呵呵呵.
我们是否有自动方式在VB.NET中插入变量的setter和getter属性?
我有以下具有自动属性的类:
class Coordinates
{
public Coordinates(int x, int y)
{
X = x * 10;
Y = y * 10;
}
public int X { get; set; }
public int Y { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
正如您从构造函数中看到的,我需要将值乘以 10。有没有办法在不删除自动属性的情况下做到这一点?
我尝试了以下操作,但不认为它会导致递归,然后一切都变得很顺利
public int X { get {return X;} set{ X *= 10;} }
Run Code Online (Sandbox Code Playgroud)
我想将值赋给 X 和 Y 乘以 10。
Coordinates coords = new Coordinates(5, 6); // coords.X = 50 coords.Y = 60
coords.X = 7; // this gives 7 to X but …Run Code Online (Sandbox Code Playgroud) 我试图在VS2005中使用自动实现的属性.我在我的机器上加载了.NET 3.0框架,但Visual Studio仍在使用.NET 2.0进行编译.如何告诉它使用.NET 3.0?
C#编译器不允许这样做.这是什么原因?我可以使用哪些解决方法?
基本上我需要交换一些值,但不想全部使用相同的交换代码.
最近,在阅读了很多关于互联网的教程之后,我注意到有些开发人员会跳过在他们的模型类中编写字段而只是使用属性,如下所示:
public class MyClass
{
public string MyProperty { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)
除了编写更少的代码之外,这样做的好处究竟是什么?虽然我确实知道setter是私有的,但是当你没有指定私有字段时,是不是存在某种安全问题?换句话说:这里最好的做法是什么?编写没有字段和相关属性的模型类,或者只是在没有字段的情况下使用这些公共属性?
提前致谢,
博
可能重复:
C#:我可以删除"{get; 组; }"?
我的代码有数百行,如下所示:
public string abc { get; set; }
public string def { get; set; }
Run Code Online (Sandbox Code Playgroud)
所有人都有{ get; set; }他们的结尾.
我想知道的是,是否有一种方法可以清理我的代码,甚至消除了{ get; set; }仍然公开的需要.
我知道这不是一个大问题,但我想尝试尽可能地清理我的代码.
我有一个类库项目.我在下面有一个属性.这不是一个只读属性
private Int32 ABC ;
public Int32 ABCD
{
set
{
this.ABC = value;
}
get
{
return this.ABC;
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,是否有必要声明私有变量和getter/setter?
编辑
我的意思是它可能像下面?
public Int32 ABCD {}
Run Code Online (Sandbox Code Playgroud) 在C#中,通常在我定义属性时,我为get和set声明并实现一行或多行.例如
public bool IsThere
{
get { return _isThere; }
set { _isThere = value;}
}
Run Code Online (Sandbox Code Playgroud)
现在这是什么意思?
public bool IsThere
{
get;
set;
}
Run Code Online (Sandbox Code Playgroud) 在webforms .aspx页面系统上,母版页具有一些自动初始化的属性,因此
public bool MyProp => bool.Parse(Service.Settings["YorN"]);
Run Code Online (Sandbox Code Playgroud)
分析页面加载,我看到PreRender事件之间,和其中一个属性的初始化存在很大差距.
我在哪里可以找出延迟?这两者之间有什么关系?