internal:對(duì)友元程序集和內(nèi)部可見.我們可以利用這一點(diǎn),使我們開發(fā)的類庫更加地安全.比如,你不喜歡你開發(fā)的ClassLib( DLL ),被其他公司或團(tuán)隊(duì)使用,就可以在使用internal , 當(dāng)然還要加上友元程序集的相關(guān)知識(shí).
目前累計(jì)服務(wù)客戶1000多家,積累了豐富的產(chǎn)品開發(fā)及服務(wù)經(jīng)驗(yàn)。以網(wǎng)站設(shè)計(jì)水平和技術(shù)實(shí)力,樹立企業(yè)形象,為客戶提供成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、網(wǎng)站策劃、網(wǎng)頁設(shè)計(jì)、網(wǎng)絡(luò)營銷、VI設(shè)計(jì)、網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。創(chuàng)新互聯(lián)始終以務(wù)實(shí)、誠信為根本,不斷創(chuàng)新和提高建站品質(zhì),通過對(duì)領(lǐng)先技術(shù)的掌握、對(duì)創(chuàng)意設(shè)計(jì)的研究、對(duì)客戶形象的視覺傳遞、對(duì)應(yīng)用系統(tǒng)的結(jié)合,為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進(jìn)步。
上代碼:
TestFrendsAbb 類庫
ToolsBytes
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace TestFrendsAbb.com { internal class ToolsBytes { private static ToolsBytes ins; private static Object obj = 0; internal static ToolsBytes Instance { get { if (ins == null) { lock (obj) { if (ins == null) ins = new ToolsBytes(); } } return ins; } } private ToolsBytes() { } ////// 組合 addArr 和 src 將addArr放在src的前面并返回 /// /// 前 /// 后 ///internal Byte[] addTop(Byte[] addArr, Byte[] src) { if (addArr != null && addArr.Length > 0) { Byte[] bc = null; if (src != null) { bc = new Byte[addArr.Length + src.Length]; Buffer.BlockCopy(addArr, 0, bc, 0, addArr.Length); Buffer.BlockCopy(src, 0, bc, addArr.Length, src.Length); } else { bc = new Byte[addArr.Length]; Buffer.BlockCopy(addArr, 0, bc, 0, addArr.Length); } return bc; } else return src; } } }
Friend:
using System; using System.Collections.Generic; using System.Linq; using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks; using TestFrendsAbb.com; [assembly: InternalsVisibleTo("MCC")] namespace TestFrendsAbb { internal class Friend { //public Byte[] addTop(Byte[] add, Byte[] src) //{ // return ToolsBytes.Instance.addTop(add, src); //} internal Byte[] addTop2(Byte[] add, Byte[] src) { return ToolsBytes.Instance.addTop(add, src); } } }
MCC : 控制臺(tái)應(yīng)用程序
Program:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MCC { class Program { static void Main(string[] args) { TestFrendsAbb.Friend fr = new TestFrendsAbb.Friend(); Byte[] by1 = BitConverter.GetBytes('胡'); Byte[] by2 = BitConverter.GetBytes('召'); Byte[] bytes = fr.addTop2(by1, by2); StringBuilder sb = new StringBuilder(); sb.Append(BitConverter.ToChar(bytes, 0)); sb.Append(BitConverter.ToChar(bytes, 2)); Console.Write(sb); Console.Read(); } } }
Other:依然能調(diào)用
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MCC.com { class Other { //Friend fr = new Friend(); TestFrendsAbb.Friend fr = new TestFrendsAbb.Friend(); } }