我有这样的模特
public class MyModel
{
public int MyModelId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public string Title { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种方法,使用数据注释,设置属性的值 - 比如标题 - 默认为其他属性值,即名称.就像是:
if(MyModel.Title == "") MyModel.Title = MyModel.Name;
Run Code Online (Sandbox Code Playgroud) 我对自动实现的属性相当新,并且我发现它们非常直接,但在Microsoft站点中它指出:
在C#3.0及更高版本中,当属性访问器中不需要其他逻辑时,自动实现的属性使属性声明更简洁.它们还使客户端代码能够创建对象.当您声明属性时,如以下示例所示,编译器将创建一个私有的匿名支持字段,该字段只能通过属性的get和set访问器进行访问.
任何人都可以解释以下语句对自动实现的属性的实际意义:" 它们还使客户端代码能够创建对象. "?
我无法弄清楚这意味着什么.
谢谢.
这个问题是相关的,但不一样:你如何给C#Auto-Property一个默认值?
我喜欢自动属性,但有时我必须做这样的事情:
private string someName;
public string SomeName
{
get
{
return someName;
}
set
{
someName = value.Trim();
}
}
Run Code Online (Sandbox Code Playgroud)
如果我必须多次做同样的事情,我开始希望我不需要输入这么多行/代码的代码.我希望能够拦截值并改变它类似:
public string Somename
{
get;
[Trim]
set;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法做这样的事情?它会是愚蠢的吗?有没有更好的办法?还有其他一般评论吗?我承认,我给出的例子有点假设,我现在找不到确切的代码,这让我想到了这一点.
谢谢.
可能重复:
如何为C#Auto-Property提供默认值?
我有一个像这样的类的财产
public String fontWeight { get; set; }
Run Code Online (Sandbox Code Playgroud)
我希望它的默认值是 "Normal"
有没有办法以"自动"样式而不是以下方式执行此操作
public String fontWeight {
get { return fontWeight; }
set { if (value!=null) { fontWeight = value; } else { fontWeight = "Normal"; } }
}
Run Code Online (Sandbox Code Playgroud) 为C#公共属性设置默认值的最简单/直接的方法是什么?
//如何为此设置默认值?
public string MyProperty { get; set; }
Run Code Online (Sandbox Code Playgroud)
请不要建议我使用私有属性并实现get/set公共属性.试图保持这种简洁,并且不想争论为什么那么好.谢谢.
假设我有一个自动实现的属性
public int SheetNum { get; set; }
Run Code Online (Sandbox Code Playgroud)
无论如何都要将默认值设置SheetNum为1,所以它会是这样的
private int sheetNum = 1;
public int SheetNum
{
set { this.sheetNum = value; }
get { return this.sheetNum; }
}
Run Code Online (Sandbox Code Playgroud) 我有一个List<>由属性暴露的对象.我通常在属性getter中初始化我的列表,如下所示:
public class Foo
{
private List<bar> _barList;
public List<bar>
{
get
{
if(_barList == null)
{
_barList = new List<Bar>()
}
return _barList;
}
set
{
_barList = value;
}
}
public Foo()
{
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我的同事通常更喜欢在类构造函数中初始化列表,如下所示:
public class Foo
{
public List<bar> BarList { get; set; }
public Foo()
{
BarList = new List<Bar>();
}
}
Run Code Online (Sandbox Code Playgroud)
这两种情况都BarList无法在初始化之前被访问.由于使用autoproperties,第二个似乎更整洁.第一个似乎是一个更好的选择,因为列表仅在首次使用时初始化.我还应该考虑其他因素吗?这是最好的做法吗?
我有以下代码:
[DisplayName("Created")]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
public DateTime? Created { get; set; }
[DisplayName("Modified By")]
public string ModifiedBy { get; set; }
[DisplayName("Modified")]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
public DateTime? Modified { get; set; }
from d in data
select new Content.Grid
{
PartitionKey = d.PartitionKey,
RowKey = d.RowKey,
Order = d.Order,
Title = d.Title,e
Created = d.Created,
CreatedBy = d.CreatedBy,
Modified = d.Modified,
ModifiedBy = d.ModifiedBy
};
Run Code Online (Sandbox Code Playgroud)
还有一个可能性d.Created,d.CreatedBy,d.Modified并且d.ModifiedBy可以为null.
我怎样才能让这个如果他们是null,则选择回到n/a了CreatedBy和ModifiedBy …
这肯定已被多次询问,但我找不到....抱歉......
为什么不允许以下内容?
public string MyString ="initial value"{get; 私人集;}
(Visual C#Express 2010)
可能重复:
C#自动属性
您好,
我最近从Java迁移到.net(c#)平台.在这里,我还没有遇到太多问题......无论如何我搞砸了
property{get, set}方法.实际上我根本无法弄清楚这些(属性)的确切含义.初始化变量或字段或对象状态的相同工作可以使用方法完成.我们可以将字段声明为私有,并可以使用相同类的公共方法访问它们. 一个简单的事情我不是程序员或员工,而是计算机科学的普通学生,旨在成为一名全职职业的程序员.
- 非常感谢你们所有人提前协助我.
财产{get,set}c# ×10
properties ×3
.net ×2
asp.net ×1
asp.net-mvc ×1
constructor ×1
default ×1
get ×1
linq ×1
methods ×1
set ×1