Tag: 属性

为什么公共领域比属性更快?

我在XNA中玩弄,看到Vector3类使用公共字段而不是属性。 我尝试了一个快速的基准,发现对于一个struct的差异是相当戏剧性的(将两个向量加在一起,一亿次带有属性的2.0s和带有字段的1.4s)。 对于一个参考types,差异似乎并不大,但它在那里。 那么为什么呢? 我知道一个属性被编译成get_X和set_X方法,这会招致方法调用的开销。 但是,这些简单的getter / setter是不是总是被JIT内联? 我知道你不能保证JIT决定做什么,但是肯定这个概率是相当高的? 还有什么是在机器层面上将公共领域与财产分开的? 还有一件事我一直在想:一个自动实现的属性( public int Foo { get; set; } )如何比公共领域更好的OOdevise? 或者更好地说:这两个不同呢? 我知道,使它成为一个财产更容易与反思,但别的? 我敢打赌,这两个问题的答案是一样的。 顺便说一句:我正在使用的.NET 3.5 SP1,我相信固定的问题结构的方法(或结构的方法,我不知道)没有内衬,所以不是这样。 我想我至less使用它,这是肯定安装,但是,然后再次,我使用Vista的64位与SP1应该有DX10.1,除了我没有DX10.1 .. 另外:是的,我一直在运行发布版本:) 编辑 :我很欣赏快速答案的家伙,但我表示,我知道一个属性访问是一个方法调用,但我不知道为什么,可能是内联方法比直接字段访问速度慢。 编辑2 :所以我创build了另一个使用显式GetX()方法的结构(o我怎么不会错过我的Java日子),并执行相同的是否我禁用内联(通过[MethodImplAttribute(MethodImplOptions.NoInlining)] )或不,所以结论:非静态方法显然不是内联的,甚至不在结构上。 我认为有些例外,JIT可以优化虚拟方法。 为什么不能在不知道inheritance的结构上发生,因此方法调用只能指向一种可能的方法,对吗? 或者是因为你可以实现一个接口吗? 这真是一种耻辱,因为它真的会让我思考如何在性能关键的东西上使用属性,但是使用字段会让我感到肮脏,所以我不妨写下我在C中所做的事情。 编辑3 :我发现这个post关于完全相同的主题。 他的最终结论是,财产呼叫确实得到了优化。 我也可以发誓,我已经读了很多次,尽pipe是在IL中的callvirt ,简单的getter / setter属性将被内callvirt 。 那么我疯了吗? 编辑4 :里德·科普塞在下面的评论中发布了答案: 回复:编辑3 – 看到我更新的评论:我相信这是x86 JIT与x64 JIT问题。 在64位的JIT是不成熟的。 我希望随着更多的64位系统每天上网,MS会迅速改进。 […]

在Objective-C中完成保护属性的解决方法

我一直在试图find一个解决方法来声明在Objective-C中的@保护属性,所以只有层次结构中的子类可以访问它们(只读,而不是写)。 我读了这样做没有logging的方式,所以我想到了这个解决方法,我想问StackOverflow的意见。 层次结构顶部的每个自定义类都包含三个类,一个实现和两个接口。 我们来命名他们: ClassA.h ClassA_protected.h ClassA.m 然后,这个ClassA的任何子类将像往常一样: ClassB.h ClassB.m 首先,我创build了一个接口ClassA.h ,我声明了一个受保护的intvariables,以便ClassA的任何子类都可以访问它: @interface ClassA : NSObject{ @protected int _myProtectedInt; } @end 下一步是我正在谈论的解决方法。 但是,一旦你读了它,你会看到它是非常简单的。 我声明了第二个名为ClassA_protected.h的接口,它实际上是ClassA.h的扩展 ,并允许我们将属性标记为readonly : #import "ClassA.h" @interface ClassA () @property (nonatomic , readonly) int myProtectedInt; @end 准备受保护的层次结构的最后一步是在ClassA.m中声明它的实现,我们只综合我们的属性: #import "ClassA_protected.h" @implementation ClassA @synthesize myProtectedInt = _ myProtectedInt; @end 这样,每个需要成为ClassA.h的子类的类都将导入ClassA_protected.h 。 所以像ClassB.h这样的孩子将如下所示: #import "ClassA_protected.h" @interface […]

C#属性可以访问目标类吗?

我想通过使用reflection从属性类访问类的属性。 可能吗? 例如: class MyAttribute : Attribute { private void AccessTargetClass() { // Do some operations } } [MyAttribute] class TargetClass { }

Python类中的属性初始化/声明:在哪里放置它们?

我想知道在Python中,在类的主体或__init__函数中初始化对象属性的最佳做法是什么? 即 class A(object): foo = None VS class A(object): def __init__(self): self.foo = None

swift willSet didSet并获取属性中的set方法

在使用这个属性的时候, willSet – didSet和get – set什么区别? 从我的angular度来看,他们都可以为物业设定一个价值。 何时以及为什么我应该使用willSet – didSet ,以及何时set ? 我知道,对于willSet和didSet ,结构如下所示: var variable1 : Int = 0 { didSet { println (variable1) } willSet(newValue) { .. } } var variable2: Int { get { return variable2 } set (newValue){ } }

总和2使用相同的密钥哈希属性

我有2个哈希值,例如: {'a' => 30, 'b' => 14} {'a' => 4, 'b' => 23, 'c' => 7} 其中a , b和c是对象。 我如何总结这些哈希键获得一个新的哈希像: {'a' => 34, 'b' => 37, 'c' => 7}

AllowAnonymous不能使用Custom AuthorizationAttribute

这让我难住了一段时间。 没有遇到类似的情况似乎在这里显然适用。 我可能错过了一些明显的东西,但是我看不见它。 在我的Mvc Web应用程序中,我使用Authorize和AllowAnonymous属性,以便您必须明确地公开可用的操作,而不是locking网站的安全区域。 我更喜欢这种方法。 但是我无法在WebAPI中获得相同的行为。 我写了一个自定义的授权属性从System.Web.Http.AuthorizeAttributeinheritance与以下: [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)] public class MyAuthorizationAttribute : System.Web.Http.AuthorizeAttribute 我把这个注册为一个filter: public static void RegisterHttpFilters(HttpFilterCollection filters) { filters.Add(new MyAuthorizationAttribute()); } 这一切都按预期工作,没有凭据,操作不再可用。 问题是,现在下面的方法将不允许AllowAnonymous属性做它的事情: [System.Web.Http.AllowAnonymous] public class HomeController : ApiController { [GET("/"), System.Web.Http.HttpGet] public Link[] Index() { return new Link[] { new SelfLink(Request.RequestUri.AbsoluteUri, "api-root"), new […]

如何在我的自定义视图中使用标准属性android:text?

我写了一个扩展了RelativeLayout的自定义视图 。 我的观点有文字,所以我想使用标准的android:text 而不需要指定一个<declare-styleable>并且每次使用我的自定义视图时不使用自定义命名空间xmlns:xxx 。 这是我使用我的自定义视图的xml: <my.app.StatusBar android:id="@+id/statusBar" android:text="this is the title"/> 我如何获得属性值? 我想我可以得到android:text属性 TypedArray a = context.obtainStyledAttributes(attrs, ???); 但什么是??? 在这种情况下(在attr.xml中没有风格的)?

是否有任何有关ASP.NET MVC控制器操作设置的AJAX属性?

我想在ASP.NET MVC中使用AJAX调用的部分视图,这是我第一次使用它。 我刚刚search了一下,是否有什么特别的东西我应该事先知道,而我很好奇的其中一个,是看有没有什么特别的属性需要设置或者与AJAX调用有关? 像[ChildActionOnly]或[HttpGet]

Spring属性(属性占位符)自动assembly

我在我的applicationContext.xml <context:property-placeholder location="classpath*:*.properties" /> <bean id="clientPreferencesManager" class="pl.bildpresse.bildchat2.business.ClientPreferencesManager" > <property name="clientApiUrl" value="${clientapi.url}" /> </bean> 是否可以通过autowire来做同样的事情? 就像是 : @Autowired @Qualifier("${clientapi.url}") public void setClientApiUrl(String clientApiUrl) { this.clientApiUrl = clientApiUrl; }