我刚学习了泛型编程,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)
Collections?为什么不是Collections<E>还是Collections<String>?<String>放在方法名称之前emptyList?(emptyList<String>()Generic 不正确吗?)
注意:我在Unity中使用C#,这意味着.NET 3.5版本,所以我不能使用await或async关键字..
当我在其中放入异步工作的方法时,使用语句会发生什么?
using (WebClient wc = new WebClient()) {
wc.DownloadFileAsync(urlUri, outputFile);
}
SomeMethod1();
SomeMethod2();
Run Code Online (Sandbox Code Playgroud)
如您所知,在DownloadFileAsync()调用该方法之后,SomeMethod1()将在仍在工作using时调用哪个是块外的.所以现在我真的很困惑在这种情况下using语句和异步方法会发生什么.DownloadFileAsync()
会Dispose()的wc,在没有任何问题的正确的时间叫什么名字?
如果没有,我该如何更正此示例?
我从今天关于SQLite的书中读到关键词":memory:",但它只说它是什么,如何使用,解释太短.所以我在这里搜索了更多信息,但无法获得SQLite特定信息.
"记忆:"模式有哪些优点?(我什么时候需要这个?)
内存数据库的性能更快?
我是否仍需要在内存数据库中使用事务?
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#和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) 我认为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++提供的默认实现).辅助函数将通过为您调用LoadLibrary和GetProcAddress在运行时加载DLL .
我真的很困惑,不知道如何理解这些.
1.隐式链接是在启动时还是仅在调用DLL中的函数时加载DLL?
这意味着两者最终都是类似的,因为LoadLibrary()是在引擎盖下调用的?
在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支持它.
我听说Unity3D具有内置多人游戏功能,它可以在没有服务器的情况下提供服务.但是我找不到任何关于它的信息,我发现的所有turtorial都只是与Photon(PUD)或Google Services合作.我知道Photon很好,所以我开始研究它并计划使用它.
但是我仍然想写一些非常简单的应用程序,不使用服务器,比如One VS One Rock Paper Scissors游戏.使用Photon必须在性能上更好,但在某些情况下,如上所述,它似乎太多了.此外,免费用户的PUD CCU只有二十,所以这意味着只有十个小组可以同时玩,Rock Paper Scissors游戏.
我看到有人说没有服务器就有可能,但其他一些人说不可能.
什么是对的?
[编辑] 我在测试中犯了一个愚蠢的错误。我在这里问了一个不知道的问题。
答案是,两者都是一样的。但我把我的帖子留在这里给其他人。
getAvailableBlocksLong() * getBlockSizeLong()和 和有getAvailableBytes()什么区别
?
我自己测试了一下,在 Genymotion 上得到了一个非常奇怪的结果。
来自getAvailableBlocksLong() * getBlockSizeLong()和的值getAvailableBytes()不同!
我真的不明白这里发生了什么。
它只与Genymotion有关吗?我应该getAvailableBytes()在大多数情况下使用吗?
[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# ×6
java ×3
c++ ×2
.net-3.5 ×1
android ×1
asynchronous ×1
c ×1
collections ×1
conditional ×1
database ×1
dll ×1
emulation ×1
encoding ×1
endianness ×1
explicit ×1
fixed ×1
generics ×1
genymotion ×1
implicit ×1
linker ×1
locking ×1
memory ×1
mono ×1
multiplayer ×1
performance ×1
photon ×1
sqlite ×1
temporary ×1
text ×1
unsafe ×1
using ×1
utf-32 ×1