我知道如何使用属性,我理解他们隐含地调用底层get和set访问器,这取决于我们是写入还是读取属性.
static void Main(string[] args)
{
A a = new A();
(a.b).i = 100;
}
class A
{
private B _b = new B();
public B b
{
get { return _b; }
}
}
class B
{
public int i;
}
Run Code Online (Sandbox Code Playgroud)
代码(a.b).i = 100;基本上是第一个属性的get访问者返回对象的引用_b,一旦我们有了这个引用,我们就能够访问_b’s成员并更改它们的值.
因此,在我们的示例中,具有只读属性仅防止外部代码更改引用变量的值_b,但它不会阻止外部代码访问_b’s成员.
因此,似乎属性只能检测我们是否正在尝试读取或写入_b位于堆栈上的变量(在我们的案例变量中),而它无法检测我们是否也尝试写入对象的成员堆栈上的变量(假设此变量是引用类型)指向的.
a)但这不能破坏拥有只读属性的整个目的吗?如果属性能够检测我们是否正在尝试访问由get访问器返回的对象的成员(假设支持字段是引用类型),那会不会更有效?
谢谢
当div在另一个div中时,我怎么能得到div宽度"overflow:hidden;" ?
我尝试将overflow设置为auto并在使用$("#divselector").width()之后但我总是得到父div宽度!
例如:
HTML:
<div id="content">
<div id="item">content content content ...</div>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
#content
{
width: 760px;
height: 100%;
overflow: hidden;
display: block;
position: relative;
cursor: move;
}
Run Code Online (Sandbox Code Playgroud)
细节:使用IE 6工作,但在IE 8中没有...
问题在Emacs中编写HTML5?谈到nxml-mode但是,从我读到的,只能用于XHTML5,我想使用带有HTML5的emacs(没有XML语法).是否有任何模式具有自动缩进,标签/属性完成等?
是否有DateTimeFormatInfo格式模式将一周中的某一天转换为两个字符?例如星期二变成涂,星期三变成我们.格式字符串需要符合DateTimeFormatInfo for日期格式.
加成:
也许我正在寻找扩展DateTimeFormatInfo到包含自定义格式的解决方案?
var Test = (function() {
return {
useSub: function () {
this.Sub.sayHi();
},
init: function () {
$(document).ready(this.useSub);
}
};
})();
Test.Sub = (function () {
return {
sayHi: function () {
alert('hi');
}
};
})();
Test.useSub(); // works
Test.init(); // explodes
Run Code Online (Sandbox Code Playgroud)
上面我试图创建一个Test命名空间并向其添加一个对象Sub.我一直很好,直到我尝试在jQuery中使用该对象.错误是"Uncaught TypeError:无法调用方法'sayHi'未定义".如果有更好的方法,我愿意接受.
编辑:
显然这是演示代码.在我的实际应用程序中,我使用的解决方案因为我认为最清楚的是这一个:
var Namespace (function () {
return {
init: function () {
$(document).ready(function() {
Namespace.onReady();
}
},
onReady: function() {
alert('Now I am back in the Namespace scope. Proceed as planned');
}
};
})();
Run Code Online (Sandbox Code Playgroud)
Edit2:所有jQuery回调似乎都要求以这种方式使用它们,否则就会搞砸了范围.
我是一位经验丰富的C/C++/C#程序员,刚刚进入VB.NET.我通常使用CType(和CInt,CBool,CStr)进行演员表示,因为它是较少的字符,并且是我接触的第一种投射方式,但我也知道DirectCast和TryCast.
简单来说,DirectCast和CType之间是否有任何差异(演员,表演等的影响)?我理解TryCast的想法.
如何在ac#程序中添加"IF DEBUG"条件,以便在运行时如果在调试模式下运行它将忽略一组代码,如果程序没有运行,则执行一段代码调试模式?可以使用的情况是如果在块的开始处采用时间戳并且在结束时采用另一个时间戳.在运行时几乎没有什么不同.然而,如果你在调试模式中单步调试代码,它们会有很大不同,并且"if block"中的错误条件可能会被启动,从而导致某些代码的不合时宜(双关语)执行.
我需要一些帮助,使用xslt样式表将xml文档转换为CSV文件.我试图使用以下xsl,我似乎无法正确.我希望我的逗号分隔文件包含列标题,然后是数据.我最大的问题是删除最后一项之后的最后一个逗号并插入一个回车符,以便每组数据显示在一个单独的行上.我一直在使用XML Notepad.
<xsl:template match="/">
<xsl:element name="table">
<xsl:apply-templates select="/*/*[1]" mode="header" />
<xsl:apply-templates select="/*/*" mode="row" />
</xsl:element>
</xsl:template>
<xsl:template match="*" mode="header">
<xsl:element name="tr">
<xsl:apply-templates select="./*" mode="column" />
</xsl:element>
</xsl:template>
<xsl:template match="*" mode="row">
<xsl:element name="tr">
<xsl:apply-templates select="./*" mode="node" />
</xsl:element>
</xsl:template>
<xsl:template match="*" mode="column">
<xsl:element name="th">
<xsl:value-of select="translate(name(.),'qwertyuiopasdfghjklzxcvbnm_','QWERTYUIOPASDFGHJKLZXCVBNM ')" />
</xsl:element>,
</xsl:template>
<xsl:template match="*" mode="node">
<xsl:element name="td">
<xsl:value-of select="." />
</xsl:element>,
</xsl:template>
Run Code Online (Sandbox Code Playgroud)
很长一段时间,我正在思考和研究汇编形式的C语言编译器的输出,以及CPU架构.我知道这对你来说可能很愚蠢,但在我看来,事情是非常无效的.如果我错了,请不要生气,并且有一些原因我没有看到所有这些原则.如果你告诉我为什么这样设计,我会很高兴的.我实际上真的相信我错了,我知道让人们聚在一起的人的天才头脑知道这样做的理由.究竟是什么,你问?我马上告诉你,我用C作为例子:
1:堆栈本地范围内存分配:
因此,典型的本地内存分配使用堆栈.只需将esp复制到ebp,然后通过ebp分配所有内存.好的,如果您明确需要默认堆栈RAM,我会理解这一点,但如果我理解它正确,现代操作系统会使用分页作为应用程序和物理RAM之间的转换层,当您需要的地址在到达实际RAM之前进一步转换字节.那么为什么不说0x00000000是int a,0x00000004是int b等等?并通过mov 0x00000000,#10访问它们?因为您实际上不会访问内存块0x00000000和0x00000004,而是您的操作系统将分页表设置为.实际上,由于ebp和esp的内存分配使用间接寻址,"my"方式会更快.
2:变量分配的两面性:
运行应用程序时,Loader将其代码加载到RAM中.当您创建变量或字符串时,编译器会生成代码,以便在main中创建时将这些值推送到顶部堆栈.所以有实际的指令,以及内存中的实际数字.因此,RAM中有2个相同值的条目.一种是指令形式,第二种是RAM中实际字节的形式.但为什么?为什么不在声明变量计数到哪个内存块时比使用时,只需插入这个内存位置?
c# ×3
jquery ×2
.net ×1
antlr ×1
antlr3 ×1
antlr4 ×1
assembly ×1
c ×1
conditional ×1
css ×1
csv ×1
ctype ×1
debugging ×1
directcast ×1
emacs ×1
html5 ×1
javascript ×1
methods ×1
namespaces ×1
properties ×1
vb.net ×1
xml ×1
xslt ×1