小编Jen*_*nix的帖子

解释集合的语法.<String> emptyList()

我刚学习了泛型编程,List<E>界面ArrayList,所以我可以理解下面的陈述.

ArrayList<String> list = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)

但我不明白我在浏览网页时看到的下一个陈述.

List<String> list2 = Collections.<String>emptyList();
Run Code Online (Sandbox Code Playgroud)
  1. 什么是Collections?为什么不是Collections<E>还是Collections<String>
  2. 为什么<String>放在方法名称之前emptyList

(emptyList<String>()Generic 不正确吗?)

  1. 该陈述是什么意思?

java generics collections

70
推荐指数
5
解决办法
4786
查看次数

使用语句中的异步方法

注意:我在Unity中使用C#,这意味着.NET 3.5版本,所以我不能使用awaitasync关键字..

当我在其中放入异步工作的方法时,使用语句会发生什么?

using (WebClient wc = new WebClient()) {
    wc.DownloadFileAsync(urlUri, outputFile);
}
SomeMethod1();
SomeMethod2();
Run Code Online (Sandbox Code Playgroud)

如您所知,在DownloadFileAsync()调用该方法之后,SomeMethod1()将在仍在工作using时调用哪个是块外的.所以现在我真的很困惑在这种情况下using语句和异步方法会发生什么.DownloadFileAsync()

Dispose()wc,在没有任何问题的正确的时间叫什么名字?

如果没有,我该如何更正此示例?

c# asynchronous using unity-game-engine .net-3.5

25
推荐指数
2
解决办法
5080
查看次数

SQLite中内存数据库的优点

我从今天关于SQLite的书中读到关键词":memory:",但它只说它是什么,如何使用,解释太短.所以我在这里搜索了更多信息,但无法获得SQLite特定信息.

  1. "记忆:"模式有哪些优点?(我什么时候需要这个?)

  2. 内存数据库的性能更快?

  3. 我是否仍需要在内存数据库中使用事务?

database memory sqlite performance temporary

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

如何使用关键字fixed在C#中固定整个数组

fixed (int* pArray = &array[0])以下示例中的行是否固定整个数组,或者只是array[0]

int array = new int[10];
unsafe {
    fixed (int* pArray = &array[0]) { } // or just 'array'
}
Run Code Online (Sandbox Code Playgroud)

c# unsafe fixed

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

托管语言是否锁定本机库的刷新和重新加载变量?

当我们使用C#Java之类的托管语言中的锁时,始终可以确保我们正在处理最新数据。

特别是在Java内存模型中,它们具有一个称为Happens-before关系的保证。但是我不确定本机库会发生什么。

说,我有这样的C函数:

static int sharedData;      // I'm not declaring this as volatile on purpose here.

void setData(int data) {
    sharedData = data;      // Not using any mutex or the like.
}

int getData() {
    return sharedData;
}
Run Code Online (Sandbox Code Playgroud)

我也有这样的C#代码:

// Thread 1
while( true )
    lock( key )
        setData( ++i );     // Calling a native C function using P/Invoke.

// Thread 2
while( true )
    lock( key )
        DoSomeJob( getData() …
Run Code Online (Sandbox Code Playgroud)

c c# c++ java locking

7
推荐指数
1
解决办法
102
查看次数

这些加载DLL何时加载:隐式链接VS显式链接

我认为Implicit链接在应用程序启动后立即加载DLL,因为它也称为"加载时动态链接".但是我在下面的链接中找到了一些奇怪的解释(https://msdn.microsoft.com/en-us/library/253b8k2c(VS.80).aspx).

隐式链接

与程序代码的其余部分一样,DLL代码在进程启动时映射到进程的地址空间,并且只在需要时才加载到内存中.因此,.def文件用于控制以前版本的Windows中的加载的PRELOAD和LOADONCALL代码属性不再具有意义.

显式链接

隐式链接到许多DLL的应用程序启动很慢,因为Windows会在应用程序加载时加载所有DLL.为了提高启动性能,应用程序可以隐式链接到加载后立即需要的那些DLL,并等待在需要时显式链接到其他DLL.

从这里隐式链接的另一种解释(https://msdn.microsoft.com/en-us/library/151kt790.aspx).

隐式链接

Visual C++链接器现在支持DLL的延迟加载.这使您无需使用Windows SDK函数LoadLibrary和GetProcAddress来实现DLL延迟加载.

在Visual C++ 6.0之前,在运行时加载DLL的唯一方法是使用LoadLibrary和GetProcAddress; 当加载使用它的可执行文件或DLL时,操作系统将加载DLL.

从Visual C++ 6.0开始,当与DLL静态链接时,链接器提供延迟加载DLL的选项,直到程序调用该DLL中的函数.

应用程序可以使用带有辅助函数的/ DELAYLOAD(延迟加载导入)链接器选项延迟加载DLL(Visual C++提供的默认实现).辅助函数将通过为您调用LoadLibraryGetProcAddress在运行时加载DLL .

我真的很困惑,不知道如何理解这些.

1.隐式链接是在启动时还是仅在调用DLL中的函数时加载DLL?

这意味着两者最终都是类似的,因为LoadLibrary()是在引擎盖下调用的?

c++ dll linker explicit implicit

6
推荐指数
1
解决办法
1993
查看次数

在C#中没有UTF-32大端?

在C#中,Encoding.UTF32是UTF-32 little-endian,Encoding.BigEndianUnicode是UTF-16 big-endian,Encoding.Unicode是UTF-16 little-endian.但我找不到UTF-32大端的任何东西.

我正在开发一个简单的textviewer,并且不认为有很多文档用UTF-32大端编码,但我也想为此做好准备,以防万一.

C#不支持UTF32大端吗?

BTW Java支持它.

c# encoding text endianness utf-32

6
推荐指数
1
解决办法
747
查看次数

Unity3D中没有服务器的内置多人游戏?

我听说Unity3D具有内置多人游戏功能,它可以在没有服务器的情况下提供服务.但是我找不到任何关于它的信息,我发现的所有turtorial都只是与Photon(PUD)或Google Services合作.我知道Photon很好,所以我开始研究它并计划使用它.

但是我仍然想写一些非常简单的应用程序,不使用服务器,比如One VS One Rock Paper Scissors游戏.使用Photon必须在性能上更好,但在某些情况下,如上所述,它似乎太多了.此外,免费用户的PUD CCU只有二十,所以这意味着只有十个小组可以同时玩,Rock Paper Scissors游戏.

我看到有人说没有服务器就有可能,但其他一些人说不可能.

什么是对的?

c# multiplayer unity-game-engine photon unity-networking

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

getAvailableBlocksLong() * getBlockSizeLong() VS getAvailableBytes()

[编辑] 我在测试中犯了一个愚蠢的错误。我在这里问了一个不知道的问题。

答案是,两者都是一样的。但我把我的帖子留在这里给其他人。

getAvailableBlocksLong() * getBlockSizeLong()和 和有getAvailableBytes()什么区别 ?

我自己测试了一下,在 Genymotion 上得到了一个非常奇怪的结果。

来自getAvailableBlocksLong() * getBlockSizeLong()和的值getAvailableBytes()不同!

我真的不明白这里发生了什么。

它只与Genymotion有关吗?我应该getAvailableBytes()在大多数情况下使用吗?

java android emulation genymotion

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

在Unity3D中为条件属性定义符号

[EDIT] 对于由于某种原因浏览此页面的人,现在情况已经改变。从Unity 2017开始,无论文件位置如何,都必须在两个文件(被调用方和调用方)中定义相同的符号。以下是Unity 2017之前的问题。我将保留此记录。


在标准C#中,如果要调用具有条件属性的方法,则必须在方法为CALLED的文件中为其定义符号。但是在Unity中,这似乎有所不同。仅当我将行放在方法EXISTS的文件中时,它才起作用。假设这样的Unity项目中有两个脚本文件。

ClassForMySymbol.cs

class ClassForMySymbol {
    [System.Diagnostics.Conditional("MY_SYMBOL")]
    public static void Print() {
        Debug.Log ("This method is called.");
    }
}
Run Code Online (Sandbox Code Playgroud)

Test.cs

public class Test : MonoBehaviour {
    void Start() {
        ClassForMySymbol.Print();
    }
}
Run Code Online (Sandbox Code Playgroud)

这仅在我在ClassForMySymbol.cs中定义“ MY_SYMBOL” 而不在Test.cs中定义时有效

我不知道发生了什么事。这正常吗?我在这里想念什么?

PS。这个问题与#define的范围或定义全局符号无关。

c# mono conditional unity-game-engine

5
推荐指数
0
解决办法
754
查看次数