我正在将VB6转换为C#.我没有VB6的经验.有什么区别:
sWords() As String
和
sWords As String
很容易看出我可以将第二个转换为string sWordsC#,但第一个我不知道这意味着什么.array?
我正在读一些VB6转换为C#.这条线是什么意思?是0&相当于IntPtr.Zero?
//'Get a Device context
hdc = GetDC(0&)
Run Code Online (Sandbox Code Playgroud)
这个值用于pinvoke,所以我不确定是否IntPtr.Zero有意义,因为我们需要选择一些对象.
OldFont = SelectObject(hdc, ObjFont)
Run Code Online (Sandbox Code Playgroud)
注意,ObjFont是通过填充的
//'Get the Window's font
ObjFont = SendMessage(hwnd, WM_GETFONT, 0, 0&)//there's that mysterious 0& agaain.
Run Code Online (Sandbox Code Playgroud) C#规范说明:
声明的基类成员可访问性不控制成员是否被继承 - 继承扩展到任何不是实例构造函数,静态构造函数或析构函数的成员.但是,可能无法在派生类型中访问继承的成员,因为它声明了可访问性,或者因为它在类型本身中被声明隐藏.
为什么一个无法访问的成员被认为是继承的?为什么这样的区别是实际的?
作为一个具体的例子
class A
{
const string foo = "c";
internal void DoWork() { }
}
class B: A
{
const string bar = "d";//renamed to foo does not appear to have a noticeable impact
B() { bar = foo; }//inaccessible due to protection level
internal new void DoWork() { }//hide inherited member
}
Run Code Online (Sandbox Code Playgroud)
在我看来,在运行时继承意味着共享状态和/或行为.在这种情况下foo不会发生.
它取决于B是否继承行为DoWork().因此,DoWork()作为一个成员B是直观和相关的.另一方面,为什么被foo视为会员B? B无法读取或写入foo.
来自C#4.0第7.5.5节.
如果M是在value-type中声明的实例函数成员:
- [...]
- 如果E未被归类为变量,则创建E类型的临时局部变量,并将E的值分配给变量.然后将E重新分类为对该临时局部变量的引用.临时变量在M中可以访问,但不能以任何其他方式访问.因此,只有当E是真正的变量 (真正的变量是什么??)时,调用者才有可能观察到M对此做出的变化.
Eric Lippert接着说:
这一点说明了可变性和按值复制语义的组合可能导致麻烦的另一种方式.例如,在构造函数运行后,readonly字段不会被归类为变量.因此,尝试调用一个方法来改变值类型的只读字段的内容会成功,但实际上会改变副本!通过完全避免可变值类型来避免这些问题.
如何重现Eric描述的场景呢?我尝试了以下内容.它像我期望的那样出错:
struct A
{
public readonly int mutableReadonlyField;
public A(int originalValue)
{
mutableReadonlyField = originalValue;
}
public A MethodThatMutatesTheContentsOfAReadOnlyField(int mutate)
{
this.mutableReadonlyField = mutate;//Constructor has run so mutableReadonlyField is a temporary local variable
//ERROR: A readonly field cannot be assigned to (except in a constructor or a variable initializer)
A newA = this;//Is this a true variable?
return newA;
}
}
Run Code Online (Sandbox Code Playgroud) 鉴于:
public SomeEntity Read(int primaryKey)
{
SomeEntity myEntity;
using (var context = new MyEntities2())
{
context.Configuration.LazyLoadingEnabled = false;//This line is wacky
myEntity = context.SomeEntities.SingleOrDefault(ct => ct.PrimaryKey == primaryKey);
if (myEntity == null)
return myEntity;
//Force eager Load...
var bypassDeferredExecution = myEntity.RelatedTable1.ToList();
var bypassDeferredExecution2 = myEntity.RelatedTable2.ToList();
}
return myEntity;
}
Run Code Online (Sandbox Code Playgroud)
如果我设置LazyLoadingEnabled = false然后myEntity.RelatedTable1.Count == 0.
保留默认值LazyLoadingEnabled = truemyEntity.RelatedTable1.Count == 2.
我的理解是,Lazy Loading和Eager Loading是极端的对立面.我迫不及待加载.无论我是否使用延迟加载,我希望我的相关表(交叉引用表)有2个结果.所以在我看来这些结果毫无意义.
为什么延迟加载会影响我的结果?
当我运行gulp时,我在解析JSON时遇到错误:
Syntax Error 'C:\Path\main.js' Error while parsing JSON
at: 98
text: '{\r\n "development":
Run Code Online (Sandbox Code Playgroud)
"text"在命令行中被截断.我尝试将输出管道传输到文件但失败了,因为错误没有显示在文件中:
Powershell cmd
gulp | Out-File C:\temp.txt -width 120
的package.json
{
"name": "helloreact",
"version": "1.0.0",
"description": "",
"main": "main.js",
"dependencies": {
"babel": "^6.5.1",
"babel-plugin-react-transform": "^2.0.0",
"babel-preset-react": "^6.3.13",
"babelify": "^7.2.0",
"bootstrap": "^3.3.5",
"flux": "^2.0.3",
"gulp": "^3.9.0",
"gulp-concat": "^2.6.0",
"gulp-connect": "^2.2.0",
"gulp-eslint": "^1.1.1",
"gulp-open": "^1.0.0",
"gulp-sourcemaps": "^1.6.0",
"jquery": "^2.1.4",
"jquery-csv": "^0.8.1",
"lodash": "^4.0.1",
"object-assign": "^4.0.1",
"react": "^0.13.3",
"react-router": "^0.13.3",
"react-tools": "^0.10.0",
"react-transform": "0.0.3",
"reactify": "^1.1.1",
"redbox-react": "^1.2.2",
"toastr": "^2.1.0", …Run Code Online (Sandbox Code Playgroud) 我想对电子邮件地址进行 URL 编码。我在w3schools上输入“bmackey@foo.com” ,但它没有编码“@”或“.”。我正在使用encodeURI()并且有相同的结果。到底是怎么回事?
至少,我认为它没有编码,因为我在 FireBug Net 选项卡中看到:
GET http://dev:8989/SJMUserManager/Service/Index/bmackey@foo.com
我期待看到
GET http://dev:8989/SJMUserManager/Service/Index/bmackey%40foo%2Ecom
我一直在从几个不同的角度攻击atoi,试图从一个字符串一次提取整数.
问题1 - 调整数组的大小
这个50个字符的数组是50或51的大小(考虑空终止符)?
char fiftyNumbersOne[51] = "37107287533902102798797998220837590246510135740250";
Run Code Online (Sandbox Code Playgroud)
问题2 - atoi输出
我在这做错了什么?
char fiftyNumbersOne[51] = "37107287533902102798797998220837590246510135740250";
int one = 0;
char aChar = fiftyNumbersOne[48];
printf("%c\n",aChar);//outputs 5 (second to last #)
one = atoi(&aChar);
printf("%d\n",one);//outputs what appears to be INT_MAX...I want 5
Run Code Online (Sandbox Code Playgroud) 我和我的一位在医疗保健领域工作的朋友说话.他提到了一种专门针对医疗保健的不同系统之间的通信语言.我相信他称之为"h7".它让我印象深刻的是XML或XML派生词.我从事医疗保健工作,但从未听说过.
在搜索谷歌我没有看到任何关于"H7"的编程语言.你听说过吗?它是什么,我在哪里可以找到它的信息?
我收到错误:
CS1513: } expected
我没有看到任何遗漏的括号.根据我的经验,剃刀解析器有时会因确定HTML与C#而被绊倒,因此我将这些错误带入了一定程度.
我做了一些修改,即我添加了一个辅助方法.通过剃刀在View中定义方法实现是否合法?例如
@{
protected string MyHelper(int ItemNumber, int RowNumber, int ColumnNumber)
{
string irc = "";
irc += "i" + ItemNumber;
irc += "r" + RowNumber;
irc += "c" + ColumnNumber;
return irc;
}
}
Run Code Online (Sandbox Code Playgroud) c# ×5
vb6 ×2
atoi ×1
babeljs ×1
c ×1
gulp ×1
inheritance ×1
javascript ×1
reactjs ×1
urlencode ×1