雪千渔Blog

  • 首页
  • 写写代码
    • dotNet
    • C++
    • Lua
    • Visual Basic
    • Java
    • Android
    • Web
  • DCC
    • Maya
    • Maya-Plug
    • AfterEffect
    • AfterEffect-Plug
    • PhotoShop-Plug
  • 游戏制作
    • Unity3D
    • UnrealEngine
    • 经验杂谈
    • 游戏设计
    • 自研引擎
    • 效果实现
  • 其他
    • 乱七八糟
    • 软件工具
    • 留言板
    • 自制素材
    • 关于我
  • 世界的尽头
dotNet
dotNet

委托DynamicInvoke与反射Invoke性能测试

性能测试 先放结果,经过多次性能测试并取得平均值: 明确类型的委托:执行时间:41, 内存消耗:64120 不明确类型的委托:执行时间:6339,内存消耗:1524224 通过反射Invoke执行:执行时间:1087,内存消耗:4344552   明确类型的委托 委托作为C#特殊类型,在明确委托类型下编译器则会特殊照顾,在委托类中生成隐藏的函数,如System.Action<T>的Invoke函数: .method public hidebysig newslot virtual instan…

2022年3月21日 0条评论 170点热度 0人点赞 JomiXedYu 阅读全文
C++

C#与C/C++动态链接库交互踩坑总结

C与C#的交互 在C#执行C编写的DLL时可能会出现很多问题,而绝大部分问题都出自数据封装传送上,接下来总结了本次交互实验。 环境使用MSVC2019,使用__declspec(dllexport)作为DLL导出关键字,使用__stdcall作为调用协议。 为了更方便使用,声明两个宏:(WINAPI就是__stdcall,来自于windows.h) #define DLLEXPORT __declspec(dllexport) #define CALLAPI WINAPI C#中使用char*和sbyte*等指针使…

2021年1月1日 0条评论 867点热度 2人点赞 JomiXedYu 阅读全文
dotNet

C#动态生成IL实现匿名类和接口

通过这种方式可以直接对接口实例化了(伪),动态的通过委托来实现接口,匿名类型是在运行时动态构建的。 实现思路: 使用AssemblyBuilder、TypeBuilder构建类型,并用FieldBuilder构建一个字典字段<String, Delegate>,用来保存函数名和匿名函数,MethodBuilder构建方法并使用IL流填充,调用保存的匿名函数表中的函数。 构建动态类型的方法要求传入一个<String, Delegate>函数字典,可以使用字典的初始化器来初始化匿名函数来达到实现…

2020年7月27日 0条评论 1505点热度 7人点赞 JomiXedYu 阅读全文
dotNet

C#之结构体与二进制数据的转换

在写关于二进制文件操作程序的时候,经常要去解析文件头,在C++中我通常是使用Stream把文件读取进来后直接将二进制数据拷贝到一个文件头结构体的内存中(memcpy,此处要注意内存对齐的问题),但在C#中没有这个函数,就自己实现了个。整体来说比较麻烦,我也没想到什么其他的好办法,如果有请给我留言。 public unsafe class Unmanaged { public static T CreateStructByBytes<T>(byte[] bytes) where T : unmanaged…

2020年6月28日 0条评论 1226点热度 0人点赞 JomiXedYu 阅读全文
dotNet

C#之拓展方法的本质

扩展方法可以使对象增加额外的“看似是成员”的方法。 普通的实例类型定义: public class InstanceClass { public int a = 3; public void instanceMethod() { this.a = 122; } } 扩展方法的定义: public static class InstanceClassExt { public static void Ext(this InstanceClass _this) { _this.a = 5; } } 分别对成员实例方法和扩…

2020年5月20日 0条评论 971点热度 0人点赞 JomiXedYu 阅读全文
dotNet

HSV与RGB互转公式与Color封装

无论是System.Draw.Color还是UnityEngine.Color对颜色操作的功能还是太少了,我们在用ps等调色面板使用的都是0-255范围的颜色值,但在图形层却使用的是0-1的浮点数,所以自己封了个支持多种Color操作的类型。 大写的RGB代表着0~255的整数。 小写rgb的范围是0~1的浮点数。 浮点转换整形使用四舍六入五求偶。 RGB转HSV公式: R' = R/255 G' = G/255 B' = B/255 Cmax = max(R', G', B') Cmin = min(R', G'…

2020年4月19日 0条评论 1657点热度 1人点赞 JomiXedYu 阅读全文
dotNet

ArrayList与List的解析

在程序编写过程中List的使用频率是相当之高,高过了数组,和Dictionary并起成为dotNet中的两大容器,但也只是会用而已,并不清楚具体的原理,早期我认为List内部是由链表实现的,但实际上并不是那样,本次查看了源码,对常用的基础容易有一定的了解。因ArrayList和List基本相同,所以先对ArrayList剖析,再来对比与List的不同。 数组在声明时就需要确认长度以便申请内存,在内存中是连续并且长度是固定的,索引速度上肯定是最快的,赋值与修改也非常简单,但因长度固定,插入和删除是个比较麻烦的事情,为…

2020年2月7日 0条评论 5294点热度 1人点赞 JomiXedYu 阅读全文
dotNet

C# using引用别名的使用方式

不引入即可使用 using的三种用法其一就是创建别名,给静态类创建别名,例 using File = System.IO.File; 这样即使不引入System.IO命名空间,也不用输入System.IO.File的全名,可以直接使用File调用。 解决二义性 可以用别名来覆盖当前文档中的类型,例如进行Unity开发的时候可能会出现System.Object和UnityEngine.Object冲突的情况,这时就可以使用using来制定默认的Object是哪个命名空间下的。 using Object = Unity…

2019年12月5日 0条评论 10048点热度 8人点赞 JomiXedYu 阅读全文
dotNet

C#/Java 使用接口实现委托和事件订阅

在C#中委托是个非常好用的东西,可以声明event事件,而且只需要+=即可订阅,制作类库作为内外的通信是很方便的,但是Java中却没有,但是可以使用接口来实现委托以及事件订阅的功能。 还有一部分人觉得在C#中使用委托可能会使代码的可读性下降,也推荐在C#中使用接口来实现该功能。 以下的代码使用C#写的,Java中也同样适用,但是Java一个类文件不能存在多个公共类,所以需要把每个文件分开写。 //接口的声明 public interface ICustomInterface { void CustomState(C…

2019年4月21日 0条评论 5360点热度 1人点赞 JomiXedYu 阅读全文
dotNet

VB.NET外部程序的编译

首先要保证电脑中要安装有.Net Framework 他的位置在C:\Windows\Microsoft.NET\Framework\版本号 目前最常用的版本是.Net4.0,也是xp可以支持的最高版本,同时也是win10自带的版本,而且很多软件也都需要使用该运行库,所以基本每个电脑都有安装。 在C:\Windows\Microsoft.NET\Framework\v4.0.30319 的文件夹目录下很多文件,其中 csc 为C#(csharp)编译器,vbc为vbNet编译器。 在控制台中输入vbc可以获得帮助 …

2019年3月25日 0条评论 3620点热度 0人点赞 JomiXedYu 阅读全文
12

JomiXedYu

一名游戏玩家。

分类
  • AfterEffect / 6篇
  • AfterEffect-Plug / 1篇
  • Android / 1篇
  • C++ / 12篇
  • dotNet / 12篇
  • Lua / 4篇
  • Maya / 2篇
  • Maya-Plug / 1篇
  • Office-VSTO&VBA / 2篇
  • Unity3D / 14篇
  • UnrealEngine / 1篇
  • Visual Basic / 8篇
  • Web / 2篇
  • 乱七八糟 / 2篇
  • 效果实现 / 2篇
  • 经验杂谈 / 2篇
  • 自制素材 / 3篇
  • 计算机图形学 / 1篇
  • 软件工具 / 4篇
友情链接
  • DorinXL
  • 小博博客
  • 秋橘斋

COPYRIGHT © 2014-2021 雪千渔Blog. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

辽ICP备20006894号-1