标签: properties

在Visual Studio中创建属性的快捷方式?

我看到有些人在C#中创建属性的速度非常快,但是他们是怎么做到的?

Visual Studio(目前使用Visual Studio 2010)可以使用哪些快捷方式来创建属性?

我正在使用C#.

例如,

public string myString {get;set;}
Run Code Online (Sandbox Code Playgroud)

c# properties shortcut visual-studio code-snippets

246
推荐指数
8
解决办法
22万
查看次数

246
推荐指数
2
解决办法
22万
查看次数

根据object属性删除数组元素

我有一个像这样的对象数组:

var myArray = [
    {field: 'id', operator: 'eq', value: id}, 
    {field: 'cStatus', operator: 'eq', value: cStatus}, 
    {field: 'money', operator: 'eq', value: money}
];
Run Code Online (Sandbox Code Playgroud)

如何根据其属性删除特定的?

例如,如何使用'money'作为字段属性删除数组对象?

javascript arrays jquery properties object

236
推荐指数
7
解决办法
17万
查看次数

Kotlin - 使用"by lazy"与"lateinit"进行属性初始化

在Kotlin中如果你不想在构造函数或类体的顶部初始化类属性,你基本上有这两个选项(来自语言参考):

  1. 延迟初始化

lazy()是一个函数,它接受一个lambda并返回一个Lazy实例,它可以作为实现一个惰性属性的委托:第一次调用get()执行传递给lazy()的lambda并记住结果,后续调用get()只返回记住的结果.

public class Hello {

   val myLazyString: String by lazy { "Hello" }

}
Run Code Online (Sandbox Code Playgroud)

所以第一次调用和子命令调用,无论它在哪里,到myLazyString将返回"Hello"

  1. 延迟初始化

通常,必须在构造函数中初始化声明为具有非null类型的属性.但是,这通常不方便.例如,可以通过依赖注入或单元测试的设置方法初始化属性.在这种情况下,您无法在构造函数中提供非null初始值设定项,但在引用类体内的属性时仍希望避免空值检查.

要处理这种情况,可以使用lateinit修饰符标记属性:

public class MyTest {

   lateinit var subject: TestSubject

   @SetUp fun setup() { subject = TestSubject() }

   @Test fun test() { subject.method() }
}
Run Code Online (Sandbox Code Playgroud)

修饰符只能用于在类体(不在主构造函数中)内声明的var属性,并且只能在属性没有自定义getter或setter时使用.属性的类型必须为非null,并且它不能是基本类型.

那么,如何在这两个选项之间正确选择,因为它们都可以解决同样的问题?

properties kotlin

232
推荐指数
7
解决办法
7万
查看次数

有没有理由在C#中使用私有属性?

我刚刚意识到C#属性构造也可以与私有访问修饰符一起使用:

private string Password { get; set; }
Run Code Online (Sandbox Code Playgroud)

虽然这在技术上很有意思,但我无法想象何时使用它,因为私人领域涉及更少的仪式:

private string _password;
Run Code Online (Sandbox Code Playgroud)

我无法想象什么时候我需要能够内部获取但不能设置设置但不能获得私有字段:

private string Password { get; }
Run Code Online (Sandbox Code Playgroud)

要么

private string Password { set; }
Run Code Online (Sandbox Code Playgroud)

但也许有一个嵌套/继承类的用例,或者可能是get/set可能包含逻辑而不是仅仅返回属性的值,尽管我倾向于保持属性严格简单并让显式方法做任何逻辑,例如GetEncodedPassword().

是否有人出于任何原因在C#中使用私有属性,或者它只是那些技术上可能但很少使用的实际代码构造之一?

附录

很好的答案,阅读它们我剔除了私人财产的这些用途:

  • 私有字段需要延迟加载时
  • 私有字段需要额外逻辑或计算值时
  • 由于私有字段可能难以调试
  • 为了"向自己提出合同"
  • 在内部转换/简化公开属性作为序列化的一部分
  • 包装要在类中使用的全局变量

c# properties access-modifiers

227
推荐指数
11
解决办法
6万
查看次数

如何使用Java属性文件?

我有一个配置值的键/值对列表,我想存储为Java属性文件,然后加载和迭代.

问题:

  • 我是否需要将文件存储在与将加载它们的类相同的包中,或者是否存在应放置它的任何特定位置?
  • 文件是否需要以任何特定扩展名结束或者是否.txt正常?
  • 如何在代码中加载文件
  • 我怎样才能遍历内部的值?

java properties

218
推荐指数
7
解决办法
30万
查看次数

在C#中通过引用传递属性

我正在尝试做以下事情:

GetString(
    inputString,
    ref Client.WorkPhone)

private void GetString(string inValue, ref string outValue)
{
    if (!string.IsNullOrEmpty(inValue))
    {
        outValue = inValue;
    }
}
Run Code Online (Sandbox Code Playgroud)

这给了我一个编译错误.我认为我很清楚我想要实现的目标.基本上我想GetString将输入字符串的内容复制到WorkPhone属性Client.

是否可以通过引用传递属性?

c# properties pass-by-reference

214
推荐指数
4
解决办法
11万
查看次数

为什么在Entity Framework模型定义中使用'virtual'作为类属性?

在以下博客中:http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4.aspx

该博客包含以下代码示例:

public class Dinner
{
   public int DinnerID { get; set; }
   public string Title { get; set; }
   public DateTime EventDate { get; set; }
   public string Address { get; set; }
   public string HostedBy { get; set; }
   public virtual ICollection<RSVP> RSVPs { get; set; }
}

public class RSVP
{
   public int RsvpID { get; set; }
   public int DinnerID { get; set; }
   public string AttendeeEmail { get; set; }
   public virtual …
Run Code Online (Sandbox Code Playgroud)

c# virtual properties class

214
推荐指数
5
解决办法
15万
查看次数

Swift类中的错误:在super.init调用时未初始化属性

我有两节课,ShapeSquare

class Shape {
    var numberOfSides = 0
    var name: String
    init(name:String) {
        self.name = name
    }
    func simpleDescription() -> String {
        return "A shape with \(numberOfSides) sides."
    }
}

class Square: Shape {
    var sideLength: Double

    init(sideLength:Double, name:String) {
        super.init(name:name) // Error here
        self.sideLength = sideLength
        numberOfSides = 4
    }
    func area () -> Double {
        return sideLength * sideLength
    }
}
Run Code Online (Sandbox Code Playgroud)

通过上面的实现,我得到错误:

property 'self.sideLength' not initialized at super.init call
    super.init(name:name)
Run Code Online (Sandbox Code Playgroud)

为什么我必须self.sideLength在打电话前设置super.init

compiler-errors properties swift

201
推荐指数
9
解决办法
10万
查看次数

如何动态地向类添加属性?

目标是创建一个类似于db结果集的模拟类.

因此,例如,如果数据库查询使用dict表达式返回{'ab':100, 'cd':200},那么我想看到:

>>> dummy.ab
100
Run Code Online (Sandbox Code Playgroud)

起初我想也许我可以这样做:

ks = ['ab', 'cd']
vs = [12, 34]
class C(dict):
    def __init__(self, ks, vs):
        for i, k in enumerate(ks):
            self[k] = vs[i]
            setattr(self, k, property(lambda x: vs[i], self.fn_readyonly))

    def fn_readonly(self, v)
        raise "It is ready only"

if __name__ == "__main__":
    c = C(ks, vs)
    print c.ab
Run Code Online (Sandbox Code Playgroud)

但是c.ab返回一个属性对象.

更换setattr线路k = property(lambda x: vs[i])完全没用.

那么在运行时创建实例属性的正确方法是什么?

PS我知道如何__getattribute__使用该方法?

python monkeypatching runtime properties

193
推荐指数
11
解决办法
19万
查看次数