小编Sam*_*ury的帖子

为什么Request ["host"] =="dev.testhost.com:1234"而Request.Url.Host =="localhost"

大家好,我似乎发现在使用Visual Studio 2008(Cassini)在内置Web服务器上本地测试ASP.NET应用程序时存在差异.

我在本地机器上设置了一个主机,将dev.testhost.com127.0.0.1相关联,因为我有一个应用程序需要根据用来调用它的主机头来改变它的外观.

但是,当我使用时请求我的测试应用程序时http://dev.testhost.com:1234/index.aspx,值Request.Url.Host始终是"localhost".而价值Request.Headers["host"]就是"dev.testhost.com:1234"(因为我希望他们来定).

我并不担心第二个值包含端口号,但是我很惊讶为什么HOST NAMES完全不同!有谁知道这是一个已知的问题,还是设计?还是我是个白痴?!

我宁愿使用Request.Url.Host,因为这样可以避免在测试时删除端口号... - 由于可能导致混淆而删除! - 山姆

c# asp.net debugging cassini visual-studio

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

在VB.NET中使用Dim foo As Foo有什么问题吗?

在最近的VB.NET项目中,我采用了我习惯在C#中使用的命名约定.也就是说,经常调用与它引用的类相同的变量,只有不同的情况,例如

Foo foo = new Foo(); // C#

Dim foo As New Foo() ' VB.NET
Run Code Online (Sandbox Code Playgroud)

我发现这通常是编写代码的最清晰的方法,特别是对于小方法.这种编码风格显然在C#中运行良好,区分大小写,并且由于Visual Studio提供的语法高亮,很容易看出类名和变量名是不同的.

然而,令我惊讶的是,在VB.NET中,这几乎在100%的时间内都能正常工作.唯一的问题是变量名称似乎具有多重身份.即它可以用于调用Foo类的实例方法和共享(静态)方法.这并没有真正引起任何问题,只是意味着Intellisense会在你点击''后提供包含静态和实例方法的列表.变量名后面.

我惊讶地发现,这实际上并没有导致我的项目出现任何混乱,到目前为止它已经非常成功了!但是,我是唯一一个从事这个特定​​项目的人.

这是一个稍长的例子:

Dim collection as Collection = New Collection()
For Each bar As Bar in Bar.All()
    collection.SomeInstanceMethod(bar)
Next
collection.SomeSharedMethod()
Run Code Online (Sandbox Code Playgroud)

*我发现的唯一问题是,有时候'重命名'重构工具会混淆,即重命名一个类时,它会重命名与类同名的变量,在它们的声明行(Dim foo As...)中,但不是对该变量的其他引用,导致编译器问题(duh).这些总是很容易纠正.

另一个小烦恼是VB.NET语法高亮显示器没有突出显示类名与变量名的任何不同,使得它不如在C#中使用它时那么好.我仍然发现代码非常易读.

还有其他人试图在团队环境中允许这个吗?在VB.NET中这个命名约定是否还有其他潜在的问题?

c# vb.net coding-style case-sensitive case-insensitive

4
推荐指数
1
解决办法
911
查看次数

如何使用带有nil输入的reflect.Value.Call()?

我想在Go中调用一个函数,在方法值上使用reflect.Value.Call,并将nil作为参数传递.请参阅下面的代码以获取说明.

我已经尝试在输入数组中使用reflect.ValueOf(nil)reflect.Value{},但是第一次恐慌是因为nil没有值; 当我把它传递给Call时,第二次恐慌,因为它是一个Zero reflect.Value.

请注意,正如代码所示,当然可以将nil传递给没有反射的函数,包括当该参数是接收器时.问题是:是否可以使用reflect.Value.Call调用func,将其中一个参数传递为nil?

您可以在http://play.golang.org/p/x9NXMDHWdM上构建并运行以下代码

package main

import "reflect"

type Thing struct{}

var (
    thingPointer = &Thing{}
    typ          = reflect.TypeOf(thingPointer)
)

func (t *Thing) DoSomething() {
    if t == nil {
        println("t was nil")
    } else {
        println("t was not nil")
    }
}

func normalInvokation() {
    thingPointer.DoSomething()
    // prints "t was not nil"
    t := thingPointer
    t = nil
    t.DoSomething()
    // prints "t was nil"
}

func reflectCallNonNil() {
    m, _ …
Run Code Online (Sandbox Code Playgroud)

reflection go

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