问题列表 - 第3920页

C#Out参数问题:Out如何处理值类型?

更新所以完全拉动了一个工具时刻.我的意思是参考与Out/Ref.任何说"参考"的东西我的意思都是参考

SomeMethod(Object someObject)

SomeMethod(out someObject)

抱歉.只是不想更改代码,所以答案已经有意义.

据我所知,不像ref那样它"复制"指针并在堆栈上创建一个新空间来使用该指针,但不会改变指针:

SomeMethod()
{
 SomeThing outer = new SomeThing();
 RefMethod(ref outer)
}

RefMethod(ref inner)  //new space on stack created and uses same pointer as outer
{
   inner.Hi = "There"; //updated the object being pointed to by outer
   inner = new SomeThing();//Given a new pointer, no longer shares pointer with outer
                           //New object on the heap
}
Run Code Online (Sandbox Code Playgroud)

Out复制指针并可以操作它指向的位置:

SomeMethod()
{
 SomeThing outer = new SomeThing();
 RefMethod(out outer)
}

RefMethod(out inner)  //same pointer shared
{

   inner …
Run Code Online (Sandbox Code Playgroud)

c# heap stack out-parameters

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

从所有网络适配器发送广播消息

我有一个应用程序发送广播消息并侦听响应数据包.以下是代码段.

m_socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
m_socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1);

m_socket.Bind(new IPEndPoint(IPAddress.Any, 2000));

m_socket.BeginSendTo(
                    buffer, 
                    0, 
                    buffer.Length, 
                    SocketFlags.None,
                    new IPEndPoint(IPAddress.Broadcast, 2000),
                    Callback), 
                    null
                    );
Run Code Online (Sandbox Code Playgroud)

当我运行应用程序时,没有发送广播消息.在我的机器上,我有三个网络适配器.一个是我的本地网络适配器,另外两个是VMWare网络虚拟适配器.当我运行我的应用程序时,我可以看到(使用wireshark网络捕获)广播消息是从其中一个VMWare网络适配器发送的.

我想修改代码,以便从PC上的所有网络适配器发送广播消息.最好的方法是什么?

.net c# sockets

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

有人可以使用Amazon Web Services中的itemsearch提供C#示例

我正在尝试使用Amazon Web Services查询艺术家和标题信息并接收专辑封面.使用C#我找不到任何接近这个的例子.在线的所有示例都已过时,不适用于AWS的新版本.

c# amazon albumart

5
推荐指数
1
解决办法
6824
查看次数

封装对象的生命周期管理

封装对象和管理其生命周期的最佳方法是什么?示例:我有一个类A,它包含一个B类型的对象,并且完全负责它.

解决方案1,克隆b对象以确保只有A能够清理它.

class A
{
    B *b;
public:
    A(B &b)
    {
        this->b = b.clone();
    }

    ~A()
    {
        delete b; // safe
    }
};
Run Code Online (Sandbox Code Playgroud)

解决方案2,直接使用传递的对象,我们冒险潜在的双重免费在这里.

class A
{
    B *b;
public:
    A(B *b)
    {
        this->b = b;
    }

    ~A()
    {
        delete b; // unsafe
    }
};
Run Code Online (Sandbox Code Playgroud)

在我的实际案例中,解决方案#2最适合.但是我想知道这是否被认为是错误的代码,因为有人可能不知道A的行为,即使它已被记录.我可以想到这些场景:

B *myB = new B();
A *myA = new A(myB);
delete myB; // myA contains a wild pointer now
Run Code Online (Sandbox Code Playgroud)

要么, …

c++ encapsulation memory-management

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

您的系统避免关键字命名冲突是什么?

通常,语言具有关键字,您无法直接使用完全相同的拼写和大小写来命名程序中的事物(变量,函数,类......).然而,有时关键字是命名某事的唯一自然选择.您在所选技术中避免/解决此冲突的系统是什么?

language-agnostic naming-conventions keyword

4
推荐指数
2
解决办法
383
查看次数

如何在使用LaTeX的数学模式下指示一个短划线?

LaTeX中有四种"破折号":连字符,短划线( - ),em-dash(---)和减$ - $.它们分别用于连字和连接词,表示范围,标点符号和数学符号.我的问题是:如何在数学模式中指出一个短划线(范围)?(如$S=1 to 2$)?我是否必须在"等式"中间退出数学模式($S=1$--$2$)?或者是否有一个我可以使用的符号并保持在数学模式?我试过$S=1\--2$但这给了我一个减号,而不是一个短划线,并$S=1--2$给出两个弊端.我的猜测是我将不得不退出数学模式,但也许有一种方法可以做到这一点.

latex

35
推荐指数
2
解决办法
4万
查看次数

如何将OpenId委托给Google Apps

我使用Google Apps作为我的域名电子邮件,我想知道是否可以将该帐户用于OpenID而不是常规Gmail帐户.

我知道我可以使用以下方法将Openid委托给其他URL:

<link rel="openid.server" href="http://www.myopenid.com/server" />
<link rel="openid.delegate" href="http://samruby.myopenid.com/" />
Run Code Online (Sandbox Code Playgroud)

但我找不到适合Google的网址.

谢谢

-Mathieu

openid google-apps

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

匹配不包含特定文本的行与正则表达式

我想用正则表达式执行以下操作但不确定如何执行此操作.我希望它匹配one two何时one two是行的开头,除非字符串包含three在后面的任何地方one two.

regex

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

在Java对象中存储MATLAB结构

我在MATLAB中使用Java HashMap

h = java.util.HashMap;
Run Code Online (Sandbox Code Playgroud)

虽然字符串,数组和矩阵与它无关

h.put(5, 'test');

h.put(7, magic(4));
Run Code Online (Sandbox Code Playgroud)

结构没有

h=java.util.HashMap;
st.val = 7;
h.put(7, st);

??? No method 'put' with matching signature found for class 'java.util.HashMap'.
Run Code Online (Sandbox Code Playgroud)




什么是使它适用于结构的最简单/最优雅的方法?

java matlab hashmap

8
推荐指数
2
解决办法
8430
查看次数

你能在ASP.NET MVC中重载控制器方法吗?

我很想知道你是否可以重载ASP.NET MVC中的控制器方法.每当我尝试时,我都会收到以下错误.这两种方法接受不同的论点.这是不能做的事吗?

控制器类型'MyController'上的当前操作请求'MyMethod'在以下操作方法之间是不明确的:

c# asp.net-mvc overloading

322
推荐指数
9
解决办法
16万
查看次数