问题列表 - 第3516页

在C#中,var关键字与输入关键字不同吗?

C#3.0引入了var关键字.编译时,编译器会为您插入正确的类型.这意味着它甚至可以在2.0运行时运行.到现在为止还挺好.但是前几天我发现了一个案例,var关键字将被替换为对象,因此不够具体.说你有类似的东西:

var data = AdoMD.GetData(...); // GetData returns a DataTable

foreach (var row in data.Rows)
{
     string blah = (string)row[0]; // it fails since it's of type object
}
Run Code Online (Sandbox Code Playgroud)

当我尝试使用行时,IntelliSense和编译器都告诉我它是对象类型.data.Rows是类型的System.Data.DataRowCollection.以下作品:

var data = AdoMD.GetData(...); // GetData returns a DataTable

foreach (DataRow row in data.Rows)
{
     string blah = (string)row[0]; // works since it now has the right type
}
Run Code Online (Sandbox Code Playgroud)

这不是一个关于VAR的使用问题,对于一个线程在这里.

我正在使用Visual Studio 2008 SP1顺便说一句.

编辑:现在附加了正确的代码.

c# var

2
推荐指数
1
解决办法
918
查看次数

抽象函数和虚函数有什么区别?

抽象函数和虚函数有什么区别?在哪些情况下建议使用虚拟或抽象?哪一个是最好的方法?

oop programming-languages virtual-functions abstract

1526
推荐指数
11
解决办法
58万
查看次数

你会为新项目使用LINQ to SQL吗?

我一直在调查用于我正在设计的基于Web的新项目的数据层,我非常希望看到将LINQ加入SQL.它显而易见的简单性,灵活性和设计器支持确实很吸引人,并且与SQL Server的隐式绑定很好.

但是,最近已经宣布LINQ to SQL现在已经退回到实体框架,因为它已被传递给ADO.NET团队(http://blogs.msdn.com/adonet/archive/2008/10 /29/update-on-linq-to-sql-and-linq-to-entities-roadmap.aspx).当然,它将在未来得到支持,但它不太可能会看到更多的开发工作.

考虑到这一点,您是否会建议我将此技术用于我的项目,还是值得选择替代ORM(nHibernate?)或手动编写通用DAL?

该项目本身是基于ASP.NET和SQL Server 2005/2008的,并且可能会使用MVC,即使它仍处于测试阶段.这是一个个人项目,数据库不会过于复杂,主要用作查看.NET未来技术的原型.我将基于我从这一方面学到的东西来建立未来项目,所以我做出的选择将影响更大的解决方案.

是的,我意识到微软可能会在明天推出一种全新的数据访问技术!;)

.net orm linq-to-entities data-access-layer linq-to-sql

9
推荐指数
2
解决办法
1973
查看次数

如何在ASP.NET中使用HtmlGenericControl创建段落(<p>)?

如何使用HtmlGenericControl类在ASP.NET中创建pragraph <p>标记?

asp.net

19
推荐指数
1
解决办法
2万
查看次数

如果(条件)继续; 或者if(!condition){...}?(风格偏好)

我知道这是一个风格问题,因此是主观标签.我有一小段代码,有两个嵌套条件.我可以用两种方式对它进行编码,我希望看到更有经验的开发人员认为它应该是什么样子.

风格1:

while (!String.IsNullOrEmpty(msg = reader.readMsg()))
{
    RaiseMessageReceived();
    if (parseMsg)
    {
        ParsedMsg parsedMsg = parser.parseMsg(msg);
        RaiseMessageParsed();
        if (processMsg)
        {
            process(parsedMsg);
            RaiseMessageProcessed();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

风格2:

while (!String.IsNullOrEmpty(msg = reader.readMsg()))
{
    RaiseMessageReceived();
    if (!parseMsg) continue;

    ParsedMsg parsedMsg = parser.parseMsg(msg);
    RaiseMessageParsed();
    if (!processMsg) continue;

    process(parsedMsg);
    RaiseMessageProcessed();
}
Run Code Online (Sandbox Code Playgroud)

(附带问题:如何在源代码示例中放置空行?)

coding-style

5
推荐指数
4
解决办法
2712
查看次数

匿名类型与动态类型

c#3.0中的匿名类型(var)和c#4.0中的动态类型(动态)之间的真正区别是什么?

.net c# dynamic anonymous-types

39
推荐指数
5
解决办法
2万
查看次数

MVC的数据库设计问题 - 每个模型1个表

开始使用MVC框架的最大障碍与1模型到1 DB表概念有关.对我来说,除了一个简单的应用程序之外,它过于简单化和不切实际.然而,MVC随处可见,包括这个令人敬畏的StackOverflow站点.通常,我遇到的所有代码示例和教程都非常简单,在这些情况下,1对1关系可以正常工作.但是,我正在寻找的是一个可以解决表连接的MVC模型的可靠实际示例.在stackoverflow的情况下,我会想象一个DB设计,包括问题,标签,用户等表.在我的数据库设计中,我可能有一个Question_Tag链接表来查找与给定问题相关的所有标签.MVC如何处理这个问题?

model-view-controller database-design

10
推荐指数
2
解决办法
4686
查看次数

Javascript Prototypal继承?

我在js做了一些继承,以便更好地理解它,我发现了让我困惑的东西.

我知道当你用new关键字调用'constructor function'时,你得到一个新对象,引用该函数的原型.

我也知道,为了进行原型继承,你必须用你想成为'超类'的对象的实例替换构造函数的原型.

所以我做了这个愚蠢的例子来尝试这些概念:

function Animal(){}
function Dog(){}

Animal.prototype.run = function(){alert("running...")};

Dog.prototype = new Animal(); 
Dog.prototype.bark = function(){alert("arf!")};

var fido = new Dog();
fido.bark() //ok
fido.run() //ok

console.log(Dog.prototype) // its an 'Object' 
console.log(fido.prototype) // UNDEFINED
console.log(fido.constructor.prototype == Dog.prototype) //this is true

function KillerDog(){};
KillerDog.prototype.deathBite = function(){alert("AAARFFF! *bite*")}

fido.prototype = new KillerDog();

console.log(fido.prototype) // no longer UNDEFINED
fido.deathBite(); // but this doesn't work!
Run Code Online (Sandbox Code Playgroud)

(这是在Firebug的控制台中完成的)

1)为什么如果所有新对象都包含对creator函数原型的引用,fido.prototype是未定义的?

2)继承链[obj] - > [constructor] - > [prototype]而不是[obj] - > [prototype]?

3)我们的对象(fido)的"原型"属性是否曾被检查过?如果是这样的话......为什么'deathBite'未定义(在最后一部分)?

javascript inheritance prototype prototypal-inheritance

16
推荐指数
2
解决办法
3374
查看次数

3
推荐指数
1
解决办法
4069
查看次数

一般来说,C#中的每个抽象函数都是虚拟的吗?

我在看Stack Overflow问题抽象函数和虚函数有什么区别?,我想知道每个抽象函数是否应该被认为是C#中的虚函数或者一般?

我对"你必须覆盖/你可以覆盖"对这个问题的回答感到有些困惑.不是C#程序员,我倾向于认为抽象函数只是一个编译时的概念,抽象函数是定义的虚函数,因为你必须提供至少一个,但可以在层次结构的下面提供多个实现.

虚函数也具有编译时维度,因为您不能覆盖非虚函数,但它们主要是运行时概念,因为它"只是"选择基于实际接收器的正确方法实现.

c# oop

22
推荐指数
1
解决办法
6243
查看次数